Пример #1
0
 public function loginByCookie($tokenString)
 {
     $this->getDI()->getEventsManager()->fire('user:beforeLoginByCookie', $tokenString);
     $tokenArray = explode('|', $tokenString);
     if (!$tokenArray || count($tokenArray) < 3) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_FORMAT_INCORRECT'));
         return false;
     }
     $token = new Entities\Tokens();
     $token->assign(array('sessionId' => $tokenArray[0], 'token' => $tokenArray[1], 'userHash' => $tokenArray[2]));
     $tokenInfo = $token::findFirst();
     if (!$tokenInfo) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_NOT_FOUND'));
         return false;
     }
     if ($tokenInfo->expiredAt < time()) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_EXPIRED'));
         return false;
     }
     $login = new Login();
     $login->id = $tokenInfo->userId;
     return $login->login();
 }
Пример #2
0
 public function getRememberMeToken()
 {
     if (!$this->username) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_NO_USER_INPUT'));
         return false;
     }
     $sessionId = $this->getDI()->getSession()->getId();
     if (!$sessionId) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_NO_SESSION'));
         return false;
     }
     $userinfo = self::findFirst("username = '******'");
     if (!$userinfo) {
         $this->appendMessage(new Message('ERR_USER_REMEMBER_TOKEN_USER_NOT_FOUND'));
         return false;
     }
     $token = new Entities\Tokens();
     $token->sessionId = $sessionId;
     $token->token = md5(uniqid(rand(), true));
     $token->userHash = $this->getRememberMeHash($userinfo);
     $token->userId = $userinfo->id;
     $token->refreshAt = time();
     $token->expiredAt = time() + $this->rememberMeTokenExpires;
     $token->save();
     $tokenString = $sessionId . '|' . $token->token . '|' . $token->userHash;
     return $tokenString;
 }