whitelist for submodules
This commit is contained in:
parent
e558d712cd
commit
a1613d9291
1 changed files with 16 additions and 15 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue