Beispiel #1
0
 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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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']);
 }
Beispiel #4
0
 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;
 }