Browse Source
user
user
git-svn-id: svn+ssh://code.netmonsters.ru/svn/majestic/branches/legacy@80 4cb57b5f-5bbd-dd11-951b-001d605cbbc5master
akulikov
16 years ago
1 changed files with 119 additions and 0 deletions
@ -0,0 +1,119 @@ |
|||
<?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(UserData::REGEXP_LOGIN, $login)) { |
|||
return false; |
|||
} |
|||
|
|||
self::setInfo(self::getByLogin($login)); |
|||
if (!self::getInfo() || self::$user->isBanned()) { |
|||
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(); |
|||
self::setInfo(Env::Session('user')); |
|||
} elseif (Env::getCookie('login') && Env::getCookie('login_hash')) { |
|||
self::remember(); |
|||
} |
|||
} |
|||
|
|||
static function setSession() |
|||
{ |
|||
$hash = self::getHash(); |
|||
Env::setCookie('login', self::$user->login, TIME_NOW + LOGIN_COOKIE_TTL); |
|||
Env::setCookie('login_hash', $hash, TIME_NOW + LOGIN_COOKIE_TTL); |
|||
|
|||
@session_start(); |
|||
|
|||
$_SESSION['user'] = self::$user; |
|||
} |
|||
|
|||
static function remember() |
|||
{ |
|||
self::setInfo(self::getByLogin(Env::getCookie('login'))); |
|||
|
|||
if (!self::getInfo()) { |
|||
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 setInfo($data) |
|||
{ |
|||
self::$user = $data; |
|||
} |
|||
|
|||
static function isGuest() |
|||
{ |
|||
return ! (bool) Env::Session('user'); |
|||
} |
|||
|
|||
static function getByLogin($login) |
|||
{ |
|||
$model = new UserDataModel(); |
|||
return $model->getByLogin($login); |
|||
} |
|||
|
|||
static function getById($id) |
|||
{ |
|||
$model = new UserDataModel(); |
|||
return $model->getById($id); |
|||
} |
|||
} |
|||
?>
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue