AuthController::passwordRestoreFinishAction PHP Method

passwordRestoreFinishAction() public method

    public function passwordRestoreFinishAction()
    {
        $translator = Zend_Registry::get('container')->getService('translator');
        $user = $this->_helper->service('user')->find($this->_getParam('user'));
        if (empty($user)) {
            $this->_helper->flashMessenger(array('error', $translator->trans('User not found.')));
            $this->_helper->redirector('index', 'index', 'default');
        }
        if (!$user->isActive()) {
            $this->_helper->flashMessenger(array('error', $translator->trans('User is not active user.')));
            $this->_helper->redirector('index', 'index', 'default');
        }
        $token = $this->_getParam('token', false);
        if (!$token) {
            $this->_helper->flashMessenger(array('error', $translator->trans('No token provided.')));
            $this->_helper->redirector('index', 'index', 'default');
        }
        if (!$this->_helper->service('user.token')->checkToken($user, $token, 'password.restore')) {
            $this->_helper->flashMessenger(array('error', $translator->trans('Invalid token.')));
            $this->_helper->redirector('index', 'index', 'default');
        }
        $form = new Application_Form_PasswordRestorePassword();
        $request = $this->getRequest();
        if ($request->isPost() && $form->isValid($request->getPost())) {
            $this->_helper->service('user')->save($form->getValues(), $user);
            $this->_helper->service('user.token')->invalidateTokens($user, 'password.restore');
            if (!$this->auth->hasIdentity()) {
                // log in
                $adapter = $this->_helper->service('auth.adapter');
                $adapter->setEmail($user->getEmail())->setPassword($form->password->getValue());
                $this->auth->authenticate($adapter);
                $this->_helper->redirector('index', 'dashboard');
            } else {
                $this->_helper->flashMessenger($translator->trans("Password changed"));
                $this->_helper->redirector('index', 'auth');
            }
        }
        $this->view->form = $form;
    }