Exemple #1
0
 /**
  * Password reset action
  *
  * Allows user to reset their password.
  *
  * @return void
  */
 public function resetpasswordAction()
 {
     if (Zend_Auth::getInstance()->hasIdentity()) {
         return $this->_helper->redirector('index', 'index');
     }
     $token = $this->getRequest()->getParam('token', null);
     if (null === $token || '' == $token) {
         throw new UserControllerException('Invalid verification token');
     }
     if (null == ($passwordResetToken = UserPasswordResetTokenService::findOneByToken($token))) {
         throw new UserControllerException('Invalid verification token');
     }
     $form = new \Application_Form_UserPasswordReset();
     $request = $this->getRequest();
     if ($request->isPost()) {
         if ($form->isValid($request->getPost())) {
             $data = $form->getValues();
             // Update user's password
             $user = $passwordResetToken->getUser();
             $user->setPassword(UserService::encryptPassword($data['password']));
             UserService::update();
             // Track changes
             UserEditEventService::create(array('user' => $user, 'editor' => $user, 'ip' => $this->getRequest()->getServer('REMOTE_ADDR'), 'date' => new DateTime(), 'description' => 'Password reset.'));
             // Delete sender verification record
             UserPasswordResetTokenService::delete($passwordResetToken);
             // Redirect to login page
             $this->_helper->sessionMessenger('Password reset successfully. You may now login using your new password.', 'success');
             return $this->getHelper('Redirector')->gotoRoute(array(), 'login');
         } else {
             // Submitted form data is invalid
             $this->getResponse()->setHttpResponseCode(500);
             $this->view->success = 0;
         }
     }
     $this->view->form = $form;
 }