Exemplo n.º 1
0
 public function processrecoverpasswordAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender(TRUE);
     $formvalues = $this->_getAllParams();
     $session = SessionWrapper::getInstance();
     // debugMessage($this->_getAllParams());
     if (!isEmptyString($formvalues['email'])) {
         // process the password recovery
         $user = new UserAccount();
         $useraccount = new UserAccount();
         // $user->setEmail($this->_getParam('email'));
         # check which field user is using to login. default is username
         $credcolumn = "username";
         $login = (string) $formvalues['email'];
         # check if credcolumn is phone
         if (strlen($login) == 12 && is_numeric(substr($login, -6, 6))) {
             $credcolumn = 'phone';
         }
         # check if credcolumn is emai
         $validator = new Zend_Validate_EmailAddress();
         if ($validator->isValid($login)) {
             $credcolumn = 'email';
         }
         // debugMessage($credcolumn);
         $userfond = false;
         switch ($credcolumn) {
             case 'email':
                 if ($useraccount->findByEmail($formvalues['email'])) {
                     $userfond = true;
                     // debugMessage($useraccount->toArray());
                 }
                 break;
             case 'phone':
                 $useraccount = $user->populateByPhone($formvalues['email']);
                 if (!isEmptyString($useraccount->getID())) {
                     $userfond = true;
                     // debugMessage($useraccount->toArray());
                 }
                 break;
             case 'username':
                 if ($useraccount->findByUsername($formvalues['email'])) {
                     $userfond = true;
                     // debugMessage($useraccount->toArray());
                 }
                 break;
             default:
                 break;
         }
         // exit;
         if (!isEmptyString($useraccount->getID())) {
             $useraccount->recoverPassword();
             // send a link to enable the user to recover their password
             $session->setVar(SUCCESS_MESSAGE, "Instructions on how to reset your password have been sent to your email (" . $useraccount->getEmail() . ")");
             $this->_helper->redirector->gotoUrl($this->view->baseUrl("user/login"));
         } else {
             $usecase = '1.14';
             $module = '1';
             $type = USER_RECOVER_PASSWORD;
             $details = "Recover password request for user with Identity " . $formvalues['email'] . " failed. No match found.";
             $browser = new Browser();
             $audit_values = $session->getVar('browseraudit');
             $audit_values['module'] = $module;
             $audit_values['usecase'] = $usecase;
             $audit_values['transactiontype'] = $type;
             $audit_values['userid'] = $session->getVar('userid');
             $audit_values['transactiondetails'] = $details;
             $audit_values['status'] = "N";
             // debugMessage($audit_values);
             $this->notify(new sfEvent($this, $type, $audit_values));
             // send an error message that no user with that email was found
             $session = SessionWrapper::getInstance();
             $session->setVar(FORM_VALUES, $this->_getAllParams());
             $session->setVar(ERROR_MESSAGE, $this->_translate->translate("profile_user_invalid_error"));
             $this->_helper->redirector->gotoUrl($this->view->baseUrl("user/recoverpassword"));
         }
     }
 }