protected function _is_display() { $user = Loader::get_user(); $access_zone = config(URL_AP, 'access', 'zone'); $access_users = (array) config(URL_AP, 'access', 'user'); $access_groups = (array) config(URL_AP, 'access', 'group'); $controller_name = Buffer::get(URL_CONTROLLER); $controller_zone = config(URL_CONTROLLER, $controller_name, 'zone'); $permissions = config(URL_AP, 'access', $controller_name, 'permissions') | config(URL_AP, 'access', 'permissions'); $path_url = get_path_url(); //Попытка доступа в области закрытые для посещения? if ($controller_zone == Z_CLOSED or $access_zone == Z_CLOSED) { return FALSE; } if ($access_zone != Z_PUBLIC and $user->is_visitor()) { return FALSE; } //Проверяем не заблокирован ли IP if (config(URL_AP, 'access', 'check_blocked_ip')) { Security::check_access_ip(); } //разрешён ли вход этому типу пользователей? if (!in_array(User::T_ALL, $access_users) and !empty($access_users) and !in_array($user->get_type(), $access_users)) { return FALSE; } //Состоит ли пользователь в нужных для доступа группах? if (!$user->is_groups($access_groups)) { return FALSE; } //Проверка прав доступа при входе в закрытую зону сайта if ((bool) $permissions === TRUE and ($controller_zone == Z_PRIVATE or $access_zone == Z_PRIVATE) and !($user->check_permission($path_url) & $permissions)) { return FALSE; } return TRUE; }
public function execute() { $user = Loader::get_user(); $user->get_module('secret_key')->unset_secret_key(); Session::destroy(Session::get_sid()); $user->reset(0); self::set_client_command('unset_secret_key', array()); self::set_client_command('refresh', array('url' => 'self')); }
public static function check_signature($client_sig) { $user = Loader::get_user(); if (!$client_sig) { return FALSE; } if (!$user->get_module(User::M_SECRET_KEY)->check_secret_key()) { $user->get_module(User::M_SECRET_KEY)->unset_secret_key(); Session::destroy(Session::get_sid(), Session::ST_INCORRECT); return FALSE; } //Создаём серверную сигнатуру //1. получаем все параметры и удаляем параметр с сигнатурой $all_params = Buffer::get_post(); unset($all_params['sig']); $elements_sig = array(); //2. извлекаем значения из пришедших параметров в обязательный список параметров на серврере $params = config('web', 'sig_params'); foreach ($params as $param) { //некоторые параметрый дублируем в ручную, по тем правилам, по которомы они дложны были создаваться на клиенте switch ($param) { case Session::COOKIE_ID: $elements_sig[$param] = Session::get_sid(); break; case 'location': $elements_sig[$param] = get_full_url(); $elements_sig[$param] = str_replace('/www.', '/', $elements_sig[$param]); break; default: $elements_sig[$param] = isset($all_params[$param]) ? $all_params[$param] : ''; } if (isset($all_params[$param])) { unset($all_params[$param]); } } //Если в запросе остались какие-то параметры то добавляем их в конец массива if (!empty($all_params)) { $elements_sig = array_merge($elements_sig, $all_params); } //3. получаем секретный ключ текущего пользователя $elements_sig[self::NAME_SECRET_KEY] = $user->get_secret_key(); //4. Сортируем и собираем в строку элементы запроса $server_sig = array(); ksort($elements_sig); foreach ($elements_sig as $key => $value) { $server_sig[] = $key . '=' . $value; } //5. Формируем сигнатуру сервера $server_sig = md5(implode('&', $server_sig)); //6. Сравниваем результаты if ($server_sig == $client_sig) { return TRUE; } return FALSE; }
public function add_image($opt = array()) { $user = Loader::get_user(); if (empty($opt)) { $path = './modules/images'; } else { $path = './modules/images/' . implode('/', $opt); } if (!$user->is_admin() or empty($_FILES['uploadFile']) or empty($_FILES['uploadFile']['name'])) { return; } if (!file_exists($path)) { mkdir($path); } $upload_file = $path . '/' . basename($_FILES['uploadFile']['name']); move_uploaded_file($_FILES['uploadFile']['tmp_name'], $upload_file); header("Content-type: application/xml; charset=UTF-8"); echo '<?xml version="1.0" encoding="UTF-8" ?><result>', str_replace('./', config('settings', 'base_url'), $upload_file), '</result>'; exit; }
public function execute() { //Проверяем, нужно ли проверять ip адрес у страницы на которую пытаемся попасть if (config(URL_AP, 'access', 'check_blocked_ip')) { Security::check_access_ip(); } if (!Loader::get_user()->is_visitor() or Buffer::get(URL_AP) == self::AP) { header('Location: ' . config('settings', 'base_url')); exit; } Buffer::set(self::USER_TYPE, config(URL_AP, 'access', 'user')); Buffer::set(URL_AP, self::AP); Buffer::set(URL_CONTROLLER, self::CONTROLLER); Buffer::set(URL_METHOD, self::METHOD); //Любую команду от пользователя перенаправляем в команду авторизации if (is_ajax()) { $this->_command(); } else { $this->_display(); } }
public static function set_user($uid, $remember = FALSE) { self::$_session_options['user_data']['remember'] = (bool) $remember; self::$_session_options['uid'] = $uid; self::$_session_state = self::ST_OUTDATED; //old sid $sid = self::get_sid(); //reset session self::destroy($sid); self::create(); //new sid $sid = self::get_sid(); if (!$remember) { $user_data = Format::converter(self::$_session_options['user_data'], config('settings', 'db_format')); db::simple_query(self::Q_UPDATE_UID, array('%uid' => $uid, '%sid' => $sid, '%user_data' => $user_data), TRUE); } Loader::get_user()->reset($uid); }
if (!empty($path[$i])) { for ($j = 0; $j < $i; $j++) { unset($path[$j]); } $options = array_values($path); } Buffer::set(URL_OPT, $options); //Проверяем корректность сессии if (!Session::analysis()) { Session::create(); } //Разрешён ли вообще доступ пользователю? $access_zone = config(URL_AP, 'access', 'zone'); $access_users = (array) config(URL_AP, 'access', 'user'); if ($access_zone != Z_PUBLIC) { $user = Loader::get_user(); if (!empty($access_users) and !in_array(User::T_ALL, $access_users) and $user->is_visitor() or !in_array($user->get_type(), $access_users)) { require_once PATH_STRATEGIES . 'identification.php'; $class_name = 'Identification' . $postfix; $strategy = new $class_name(); } } if (empty($strategy)) { //Определяем стратегию поведения if (is_ajax()) { //Обработка комманд require_once PATH_STRATEGIES . 'commands.php'; $class_name = 'Commands' . $postfix; $strategy = new $class_name(); } else { //Обычное отображение страницы
public function __construct() { $this->_user = Loader::get_user(); }