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;
}