/** * Зарегистрироваться в системе * * @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; }