Файл: adultscript-2.0.3-pro/files/libraries/framework/auth.php
Строк: 46
<?php
defined('_VALID') or die('Restricted Access!');
class VAuth
{
public static $groups = array();
public static function check($group='Registered', $url=NULL, $message=NULL)
{
if (!self::$groups) {
self::__cache_user_groups();
}
if (isset($_SESSION['user_id']) && isset($_SESSION['group_id'])) {
if (isset($_SESSION['status']) && $_SESSION['status'] == '1') {
if ($_SESSION['group_id'] <= self::$groups[$group]) {
return TRUE;
}
}
}
if (!is_null($message)) {
$_SESSION['message'] = $message;
}
$redirect_url = BASE_URL. '/user/login/';
if (isset($url)) {
$redirect_url = $url;
}
$group = ucfirst($group);
if ($group != 'Administrator') {
$_SESSION['redirect'] = CURRENT_URL;
}
VF::close();
VF::redirect($redirect_url);
}
public static function loggedin()
{
if (isset($_SESSION['user_id']) && $_SESSION['user_id'] != '' &&
isset($_SESSION['group_id']) && $_SESSION['group_id'] != '' &&
isset($_SESSION['status']) && $_SESSION['status'] == '1') {
return TRUE;
}
return FALSE;
}
public static function group($group='Moderator')
{
if (!self::$groups) {
self::__cache_user_groups();
}
if (VAuth::loggedin() && $_SESSION['group_id'] <= self::$groups[$group]) {
return TRUE;
}
return FALSE;
}
public static function login($username, $password)
{
$db = VF::factory('database');
$db->query("SELECT user_id, group_id, username, password, email, name, gender, birth_date,
country, city, zip, avatar, login_date, verified, status
FROM #__user
WHERE username = '".$db->escape($username)."'
LIMIT 1");
if ($db->affected_rows()) {
$user = $db->fetch_assoc();
if (VHash::check($password, $user['password'])) {
return $user;
}
}
return FALSE;
}
public static function get_group_id($name) {
if (!self::$groups) {
self::__cache_user_groups();
}
if (isset(self::$groups[$name])) {
return self::$groups[$name];
}
throw new VException('Invalid group name specified!');
}
private static function __cache_user_groups()
{
$cache = VF::factory('cache');
if (!$groups = $cache->get('user_groups', 0)) {
$db = VF::factory('database');
$db->query("SELECT group_id, name FROM #__user_groups WHERE status = '1'");
if ($db->affected_rows()) {
$rows = $db->fetch_rows();
$groups = array();
foreach ($rows as $group) {
$groups[$group['name']] = (int) $group['group_id'];
}
} else {
die('Failed to load user groups table!');
}
}
self::$groups = $groups;
}
}
?>