You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php /** * Класс для работы с пользователями * * @copyright * @link * @package Majestic * @subpackage Decorator * @since * @version SVN: $Id$ * @filesource $URL$ */ class User { static private $user = false;
static function login($login, $password) { if (empty($login) || empty($password)) { return false; } if(!preg_match("/^[a-z0-9_-]{3,20}$/i", $login)) { return false; }
if (!self::$user = self::getByLogin(strtolower($login)) ) { return false; }
if (self::$user->pass != $password) { return false; }
self::setSession(); return true; }
static function logout() { Env::setCookie(session_name(), '', 0); Env::setCookie('login', '', 0); Env::setCookie('login_hash', '', 0); if (session_id()) { session_destroy(); } }
static function process() { if (Env::getCookie(session_name())) { //есть сессия
session_start(); } elseif (Env::getCookie('login') && Env::getCookie('login_hash')) { self::remember(); } }
static function setSession() { Env::setCookie('login', self::$user->login, TIME_NOW + LOGIN_COOKIE_TTL); Env::setCookie('login_hash', self::getHash(), TIME_NOW + LOGIN_COOKIE_TTL);
session_start();
$_SESSION['user'] = self::$user; }
static function remember() { if (! self::$user = self::getByLogin(Env::getCookie('login'))) { self::logout(); } if (Env::getCookie('login_hash') == self::getHash()) { self::setSession(); } else { self::logout(); } }
static function getHash() { return md5(self::$user->id.'hckrz'.self::$user->login.'mst'.self::$user->pass.'dai'); } static function getInfo() { return Env::Session('user', self::$user); }
static function isGuest() { return ! (bool) Env::Session('user'); }
static function getByLogin($login) { return Load::model('UserData')->getByLogin($login); } } ?>
|