/** * Сравнивает AccessLevel посетителя и страниц сайта (открывает/закрывает доступ) * @return bool * * Пример: за levelAcces взято значение поля acid таблицы pages * --------------- * if(!Access::validate()){ * exit(MESSAGE_ACCESS_DENIED); * } */ public static function validate() { //Проверка админки if (MODE == 'admin' && self::getLevel() != 1) { exit(MESSAGE_ACCESS_DENIED); } else { if (isset($_SESSION['fw']['pageAccess'])) { if ($_SESSION['fw']['pageAccess']['acid'] == 0) { //Общий доступ return true; } elseif (Route::isAdmin()) { //Администратору всегда открыто return true; } else { if (self::getLevel() != $_SESSION['fw']['pageAccess']['acid']) { return false; } } } } }
define('CUR_PAGE', isset($_GET['page']) ? (int) $_GET['page'] <= 1 ? 1 : (int) $_GET['page'] : 1); define('MODE', isset($_GET['mode']) ? $_GET['mode'] : 'public'); define('SECTION', isset($_GET['section']) ? $_GET['section'] : 'pages'); define('MESSAGE_ACCESS_DENIED', 'У вас нет доступа к данному разделу сайта! Вернитесь на <a href="/' . PATH . '">главную страницу</a>'); if (MODE == 'public') { define('ROUTE', isset($_GET['route']) ? $_GET['route'] : 'index'); } else { define('ROUTE', isset($_GET['route']) ? $_GET['route'] : (Route::isAdmin() === true ? 'pages' : 'autorization')); } if (MODE == 'public') { if (!file_exists(TPLS_DIR . '/' . ROUTE . '.tpl')) { Files::addtolog(LOG_404, 'Попытка доступа к не существующему разделу.'); Route::status404(); } Files::load(MODELS_DIR . '/' . ROUTE . '.php'); Files::load(CONTROLLERS_DIR . '/' . ROUTE . '.php'); } elseif (MODE == 'admin') { $moduls = glob('app/controllers/admin/*.php'); $name_modules = array(); foreach ($moduls as $modul) { $name_modules[] = strtr($modul, array('app/controllers/admin/' => '', '.php' => '')); } if (Route::isAdmin() === false && !in_array(ROUTE, $name_modules)) { Files::addtolog(LOG_ACCESS, 'Попытка доступа к закрытому разделу.'); Route::status404(); } else { Files::load(ADMIN_MODELS_DIR . '/' . ROUTE . '.php'); Files::load(ADMIN_CONTROLLERS_DIR . '/' . ROUTE . '.php'); } }