public function forgotAction() { $request = $this->getRequest(); $forgotForm = new Rabotal_Form_ForgotPassword(); if ($request->isPost() && $forgotForm->isValid($request->getPost())) { $usersTable = new Rabotal_Model_Users(); $user = $usersTable->getByEmailOrLogin($forgotForm->getValue('name')); if (!$user) { $forgotForm->getElement('name')->addError('Пользователь не найден'); } else { $key = md5(microtime() . $user->id . rand()); $profile = $user->findDependentRowset('Rabotal_Model_UsersProfile', 'User')->current(); $profile->forgot_key = $key; $profile->save(); $this->view->token = $key; $this->view->baseUrl = Zend_Controller_Front::getInstance(); $this->view->user = $user; $this->view->profile = $profile; $mail = $this->getInvokeArg('bootstrap')->getResource('Mailer'); $mail->setBodyHtml($this->view->render('mail/html/restore-password.phtml')); $mail->setBodyText($this->view->render('mail/txt/restore-password.phtml')); $mail->setSubject($this->view->render('mail/subject/restore-password.phtml')); $mail->addTo($user->email, $profile->fullname ? $profile->fullname : $user->username); $mail->send(); $this->_helper->FlashMessenger->addMessage('pass-dropped'); $this->_redirect('/auth/password-dropped'); } } $this->view->forgotForm = $forgotForm; }
protected function _initUser() { $this->bootstrap('Db'); $auth = Rabotal_Auth::getInstance(); $userTable = new Rabotal_Model_Users(); $user = NULL; if (!$auth->hasIdentity() && !empty($_COOKIE['uid']) && !empty($_COOKIE['ask'])) { $_user = $userTable->find((int) $_COOKIE['uid'])->current(); if ($_user && $_user->auto_signin_key === $_COOKIE['ask']) { Rabotal_Auth::identityWrite($_user); } else { $auth->clearIdentity(); } unset($_user); } if ($auth->hasIdentity()) { $user = $userTable->find($auth->getIdentity()->id)->current(); if (!$user) { $auth->clearIdentity(); } else { $userProfile = $user->findDependentRowset('Rabotal_Model_UsersProfile', 'User')->current(); if ($userProfile && $userProfile->forgot_key !== '') { $userProfile->forgot_key = NULL; $userProfile->save(); } $user->id = (int) $user->id; } } return $user; }
public static function remember($userData) { $users = new Rabotal_Model_Users(); $options = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getOption('site'); $key = md5(microtime() . $userData->id . rand()); $user = $users->find($userData->id)->current(); $user->auto_signin_key = $key; $user->save(); setcookie('uid', $userData->id, time() + self::DAYS_15, '/', $options['default']['domain']); setcookie('ask', $key, time() + self::DAYS_15, '/', $options['default']['domain']); }
private function _signUp($formData) { $security = $this->getInvokeArg('bootstrap')->getOption('secure'); $usersTable = new Rabotal_Model_Users(); $usersProfileTable = new Rabotal_Model_UsersProfile(); $values = array('email' => $formData['email'], 'username' => $usersTable->mklogin(substr($formData['email'], 0, strpos($formData['email'], '@'))), 'password' => sha1($security['salt'] . $formData['password']), 'avatar' => '', 'role' => Rabotal_User_Enum_Roles::ROLE_DEFAULT, 'date' => time(), 'auto_signin_key' => '', 'status' => Rabotal_User_Enum_Status::STATUS_DEFAULT); $userId = $usersTable->insert($values); $usersProfileTable->insert(array('user_id' => $userId)); Rabotal_Auth::identityWrite(array('id' => $userId, 'username' => $values['username'], 'email' => $values['email'])); return true; }