Esempio n. 1
0
 /**
  * Получение объекта текущего пользователя
  * @return modelUsers
  */
 public static function current()
 {
     // TODO тут надо как-то унифицировать
     return joosCore::is_admin() ? joosCoreAdmin::user() : self::instance();
 }
Esempio n. 2
0
 */
// Установка флага родительского файла
define('_JOOS_CORE', 1);
// рассчет памяти
function_exists('memory_get_usage') ? define('_MEM_USAGE_START', memory_get_usage()) : null;
// считаем время за которое сгенерирована страница
$sysstart = microtime(true);
// корень файлов панели управления
define('JPATH_BASE_ADMIN', __DIR__);
require_once dirname(JPATH_BASE_ADMIN) . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'joostina.php';
require_once JPATH_BASE . DS . 'core' . DS . 'admin.root.php';
joosDocument::header();
// работа с сессиями начинается до создания главного объекта взаимодействия с ядром
joosCoreAdmin::start();
// стартуем пользователя
joosCoreAdmin::init_user();
if (helperAcl::is_allowed('admin_panel::init') !== true) {
    joosRoute::redirect(JPATH_SITE_ADMIN, 'В доступе отказано');
}
ob_start();
joosAutoadmin::dispatch();
joosDocument::set_body(ob_get_clean());
ob_start();
// начало вывода html
// загрузка файла шаблона
$template_file = JPATH_BASE . DS . 'app' . DS . 'templates' . DS . JTEMPLATE_ADMIN . DS . 'index.php';
if (file_exists($template_file)) {
    require_once $template_file;
} else {
    throw new joosException('Файл index.php шаблона :template_name не найден', array(':template_name' => JTEMPLATE_ADMIN));
}
Esempio n. 3
0
 public static function init_user()
 {
     $option = joosRequest::param('option');
     // logout check
     if ($option == 'logout') {
         $database = joosDatabase::instance();
         // обновление записи последнего посещения панели управления в базе данных
         if (isset($_SESSION['session_user_id']) && $_SESSION['session_user_id'] != '') {
             $query = "UPDATE #__users SET lastvisit_date = " . $database->get_quoted(JCURRENT_SERVER_TIME) . " WHERE id = " . (int) $_SESSION['session_user_id'];
             $database->set_query($query)->query();
         }
         // delete db session record corresponding to currently logged in user
         if (isset($_SESSION['session_id']) && $_SESSION['session_id'] != '') {
             $query = "DELETE FROM #__users_session WHERE session_id = " . $database->get_quoted($_SESSION['session_id']);
             $database->set_query($query)->query();
         }
         session_destroy();
         joosRoute::redirect('index.php');
     }
     if (session_name() != JADMIN_SESSION_NAME) {
         joosRoute::redirect(JPATH_SITE_ADMIN, 'Ошибка сессии');
     }
     $my = new modelUsers();
     $my->id = joosRequest::int('session_user_id', 0, $_SESSION);
     $my->user_name = joosRequest::session('session_user_name');
     $session_id = joosRequest::session('session_id');
     $logintime = joosRequest::session('session_logintime');
     if ($session_id != session_id()) {
         joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы');
     }
     // check to see if session id corresponds with correct format
     if ($session_id == md5($my->id . $my->user_name . $logintime)) {
         $task = joosRequest::param('task');
         if ($task != 'save' && $task != 'apply') {
             $database = joosDatabase::instance();
             $session_life_admin = joosConfig::get2('session', 'life_admin');
             // purge expired admin sessions only
             $past = time() - $session_life_admin;
             $query = "DELETE FROM #__users_session WHERE time < '" . (int) $past . "' AND guest = 1 AND user_id <> 0";
             $database->set_query($query)->query();
             // update session timestamp
             $query = "UPDATE #__users_session SET time = " . $database->get_quoted(time()) . " WHERE session_id = " . $database->get_quoted($session_id);
             $database->set_query($query)->query();
             // set garbage cleaning timeout
             self::set_session_garbage_clean($session_life_admin);
             // check against db record of session
             $query = "SELECT COUNT( session_id ) FROM #__users_session WHERE session_id = " . $database->get_quoted($session_id) . " AND user_name = " . $database->get_quoted($my->user_name) . " AND user_id = " . (int) $my->id;
             $count = $database->set_query($query)->load_result();
             // если в таблице нет информации о текущей сессии - она устарела
             if ($count == 0) {
                 setcookie(JADMIN_SESSION_NAME);
                 // TODO тут можно сделать нормальную запоминалку последней активной страницы, и разных данных с неё. И записывать всё это как параметры пользователя в JSON
                 joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы');
             }
         }
     } elseif ($session_id == '') {
         joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы');
     } else {
         joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы');
         exit;
     }
     self::$user = $my;
 }
Esempio n. 4
0
 /**
  * Получение инстанции текущего авторизованного пользователя
  * Функция поддерживает работу и на фронте и в панели управления сайта
  *
  * @tutorial joosCore::user() => Объект пользователя modelUsers
  *
  * @return modelUsers
  */
 public static function user()
 {
     return self::$is_admin ? joosCoreAdmin::user() : modelUsers::instance();
 }