Example #1
0
 /**
  * Зарегистрироваться в системе
  *
  * @param string $login
  * @param string $password
  * @param boolean $hash использовать функцию для хеширования пароля
  * @return boolean
  * @api
  */
 public function login($login, $password, $hash = true)
 {
     // хеш пароля
     if ($hash) {
         $password = $this->app->hash($password);
         // $password = hash_hmac($this->app['settings']['crypt.method'],
         //                      $password,
         //                      $this->app['settings']['crypt.key']);
     }
     // находим пользователя из базы
     $user = $this->checkLogin($login, $password);
     if (!$user) {
         $this->status = self::STATUS_USERNAME_INCORRECT;
         return false;
     }
     // если сесии храняться в базе
     if ($this->map['sid']) {
         $sidName = $this->map['sid'];
         $onlineName = $this->map['online'];
         $d_time = time() - strtotime($user->{$onlineName});
         // Имееться ли пользователь уже в системе
         // для это проверяем имееться ли запись о сесии в базе
         if ($d_time < $this->dTime && $user->{$sidName}) {
             if (!$this->checkSidAuth($user->{$sidName})) {
                 $this->status = self::STATUS_SESSION_INCORRECT;
                 return false;
             }
         }
     }
     // Все хорошо - пользователь найден и он ни где не используеться
     $this->user = $user;
     $this->app->session['auth'] = array('user' => $user, 'password' => $password, 'login' => $login, 'online' => time());
     $this->setOnline();
     return true;
 }