Source for file AuthUser.class.php
Documentation is available at AuthUser.class.php
* @copyright Energine 2006
//require_once('core/framework/User.class.php');
* Аутентифицированный пользователь.
* Флаг показывающий залогинился ли пользователь только что
* @var AuthUser единый для всей системы экземпляр класса AuthUser
private static $instance;
* Возвращает единый для всей системы экземпляр класса AuthUser.
* См. паттерн проектирования Singleton.
if (!isset (self::$instance)) {
self::$instance = new AuthUser;
* параметр введен только для избежания strict ошибки
* @todo избавиться от hardcoded имен полей формы?
parent::__construct(false);
//Если пришел флаг - отлогиниться
if (isset ($_POST['user']['logout']) || isset ($_GET['logout'])) {
//Очищаем информацию о пользователе
elseif (isset ($_SESSION['userID'])) {
$id = $_SESSION['userID'];
elseif (isset ($_COOKIE['user'])) {
if (isset ($user[0], $user[1]) && !$id = $this->authenticate($user[0], $user[1], true)) {
elseif (isset ($_POST['user']['login']) && isset ($_POST['user']['username']) && isset ($_POST['user']['password'])) {
$_POST['user']['username'],
sha1($_POST['user']['password']),
(empty($_POST['user']['remember']) ? false : true)
//stop($_POST['user']['remember']);
* Возвращает значение isJustNowAuthenticated
* Возвращает флаг успеха аутентификации:
* true - пользователь успешно аутентифицирован;
* false - пользователь является гостем.
return ($this->getID() === false)? false : true;
* Аутентифицирует пользователя по его имени и SHA-1 хэшу пароля.
* Если флаг $remember установлен в true, при успешной аутентификации
* клиенту устанавливаются cookie с информацией о его аккаунте на 30 дней,
* для автоматизации процедуры входа при последующих посещениях сайта.
* Возвращает флаг успеха аутентификации.
* @param string $username имя пользовате
* @param string $password SHA-1 хэш пароля
* @param boolean $remember
public function authenticate($username, $password, $remember = false) {
$username = trim($username);
$result = $this->dbh->select(
'u_password' => $password,
time() + (3600 * 24 * 30),
$_SESSION['userID'] = $id;
* Очищает всю информацию о пользователе из сессии, cookie.
unset ($_SESSION['userID']);
if(isset ($_COOKIE[UserSession::DEFAULT_SESSION_NAME])){
if (isset ($_COOKIE['user'])) {
|