Пример #1
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;
 }
Пример #2
0
 public function signUpAction()
 {
     $request = $this->getRequest();
     $signUpForm = new Rabotal_Form_SignUp();
     $bootstrap = $this->getInvokeArg('bootstrap');
     $options = $bootstrap->getOption('site');
     $security = $bootstrap->getOption('secure');
     if ($request->isPost() && $signUpForm->isValid($request->getPost())) {
         $file = $signUpForm->getElement('avatar');
         $file->setValueDisabled(true);
         $file->addFilter(new Rabotal_Filter_File_RenameImage($options['avatar']['path']));
         $values = $signUpForm->getValues();
         $values['avatar'] = '';
         unset($values['retype']);
         if ($file->isUploaded() && $file->receive()) {
             $values['avatar'] = substr($file->getFileName(), strlen($options['avatar']['path']));
         }
         $values['password'] = sha1($security['salt'] . $values['password']);
         $users = new Rabotal_Model_Users();
         $usersProfile = new Rabotal_Model_UsersProfile();
         $values['date'] = time();
         $values['role'] = Rabotal_User_Enum_Roles::ROLE_DEFAULT;
         $values['status'] = Rabotal_User_Enum_Status::STATUS_DEFAULT;
         $values['auto_signin_key'] = '';
         $profile = array('fullname' => $values['fullname']);
         unset($values['fullname']);
         $uid = $users->insert($values);
         $profile['user_id'] = $uid;
         $usersProfile->insert($profile);
         $user = $users->find($uid)->current();
         Rabotal_Auth::identityWrite($user);
         $this->_redirect('/');
     }
     $this->view->signUpForm = $signUpForm;
 }
Пример #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']);
 }