whitelist for submodules

This commit is contained in:
anatoly 2022-01-11 14:22:31 +03:00
parent e558d712cd
commit a1613d9291

View file

@ -3,10 +3,10 @@
/**
* Фильтр для проверки авторизации
*
* action: login(password, login)
* action: login(password, login)
* action: logout()
*/
// В класс авторизации передавать обьект для управления пользователем
// В класс авторизации передавать обьект для управления пользователем
// Вынести в отдельный файл
class Filter_Login extends Filter_Filter
{
@ -28,8 +28,8 @@ class Filter_Login extends Filter_Filter
switch ($request->getAction()) {
// Авторизация по постоянному паролю
case 'login':
$login = $request->get('login');
case 'login':
$login = $request->get('login');
$password = $request->get('password');
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
@ -48,7 +48,7 @@ class Filter_Login extends Filter_Filter
if (md5($password) == $userPassword) { // password
$this->enter($db, $result);
return true;
}
}
}
$request->set('error', true);
break;
@ -57,15 +57,15 @@ class Filter_Login extends Filter_Filter
break;
// Вход по временному паролю
case 'enter':
$login = $request->get('login');
$login = $request->get('login');
$password = $request->get('sid');
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
if ($result) {
$temp = md5($result->getString('password') . $result->getString('login') . $result->getString('sid'));
if ($password == $temp) {
if ($password == $temp) {
$this->enter($db, $result);
return true;
}
}
}
break;
default:
@ -98,13 +98,13 @@ class Filter_Login extends Filter_Filter
return md5($rawSign);
}
private function enter($db, $result)
private function enter($db, $result)
{
$this->user = $result;
$random = rand(0, 1024 * 1024);
$db->executeQuery("UPDATE users SET sid = '$random' WHERE id_user = " . $result->getInt('id_user'));
$_SESSION["group"] = $result->getInt('access');
$_SESSION["group"] = $result->getInt('access');
$_SESSION["access"] = $result->getInt('id_user'); // id_user
$_SESSION["random"] = $random; // id_user
$_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME] = $this->getBrowserSign();
@ -131,13 +131,13 @@ class Filter_Login extends Filter_Filter
if ($logged) {
return json_encode(array('result' => 'ok', 'message' => "Авторизация успешна"));
} else {
return json_encode(array('result' => 'fail', 'message' => "Неправильное имя пользователя или пароль"));
return json_encode(array('result' => 'fail', 'message' => "Неправильное имя пользователя или пароль"));
}
}
if (!$logged) {
// Параметры при неправильной авторизации
// Действия по умолчанию !! Возможно переход на форму регистрации
// Действия по умолчанию !! Возможно переход на форму регистрации
if ($request->get('mode') == 'ajax') {
if (!$this->requestIsWhite($request)) {
return json_encode(array('result' => 'fail', 'message' =>"NOT_AUTHORIZED"));
@ -157,7 +157,7 @@ class Filter_Login extends Filter_Filter
$text = $this->processor->execute($request);
return $text;
}
/* ---------------------
* Проверка на попадание реквеста в белый список
*/
@ -166,9 +166,11 @@ class Filter_Login extends Filter_Filter
$module = $request->get('module');
$action = $request->get('action');
$file = Path::join(CMS_PATH, 'modules', $module, 'filters', 'white.json');
$moduleDir = explode('_',$module)[0];
$file = Path::join(CMS_PATH, 'modules', $moduleDir, 'filters', 'white.json');
if (file_exists($file)) {
$whiteList = json_decode(file_get_contents($file), true);
if (in_array($action, $whiteList)) {
return true;
}
@ -177,4 +179,3 @@ class Filter_Login extends Filter_Filter
return false;
}
}