Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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'));
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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();
     }
 }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
 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 {
         //Обычное отображение страницы
Ejemplo n.º 8
0
 public function __construct()
 {
     $this->_user = Loader::get_user();
 }