Merge branch 'whitelist' into 'master'
whitelist for submodules See merge request composer/PHP_Library!4
This commit is contained in:
commit
55a6560634
1 changed files with 16 additions and 15 deletions
|
|
@ -3,10 +3,10 @@
|
||||||
/**
|
/**
|
||||||
* Фильтр для проверки авторизации
|
* Фильтр для проверки авторизации
|
||||||
*
|
*
|
||||||
* action: login(password, login)
|
* action: login(password, login)
|
||||||
* action: logout()
|
* action: logout()
|
||||||
*/
|
*/
|
||||||
// В класс авторизации передавать обьект для управления пользователем
|
// В класс авторизации передавать обьект для управления пользователем
|
||||||
// Вынести в отдельный файл
|
// Вынести в отдельный файл
|
||||||
class Filter_Login extends Filter_Filter
|
class Filter_Login extends Filter_Filter
|
||||||
{
|
{
|
||||||
|
|
@ -28,8 +28,8 @@ class Filter_Login extends Filter_Filter
|
||||||
|
|
||||||
switch ($request->getAction()) {
|
switch ($request->getAction()) {
|
||||||
// Авторизация по постоянному паролю
|
// Авторизация по постоянному паролю
|
||||||
case 'login':
|
case 'login':
|
||||||
$login = $request->get('login');
|
$login = $request->get('login');
|
||||||
$password = $request->get('password');
|
$password = $request->get('password');
|
||||||
|
|
||||||
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
|
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
|
||||||
|
|
@ -48,7 +48,7 @@ class Filter_Login extends Filter_Filter
|
||||||
if (md5($password) == $userPassword) { // password
|
if (md5($password) == $userPassword) { // password
|
||||||
$this->enter($db, $result);
|
$this->enter($db, $result);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$request->set('error', true);
|
$request->set('error', true);
|
||||||
break;
|
break;
|
||||||
|
|
@ -57,15 +57,15 @@ class Filter_Login extends Filter_Filter
|
||||||
break;
|
break;
|
||||||
// Вход по временному паролю
|
// Вход по временному паролю
|
||||||
case 'enter':
|
case 'enter':
|
||||||
$login = $request->get('login');
|
$login = $request->get('login');
|
||||||
$password = $request->get('sid');
|
$password = $request->get('sid');
|
||||||
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
|
$result = Filter_UserAccess::getUserByLogin($login); // Поиск по логину
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$temp = md5($result->getString('password') . $result->getString('login') . $result->getString('sid'));
|
$temp = md5($result->getString('password') . $result->getString('login') . $result->getString('sid'));
|
||||||
if ($password == $temp) {
|
if ($password == $temp) {
|
||||||
$this->enter($db, $result);
|
$this->enter($db, $result);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -98,13 +98,13 @@ class Filter_Login extends Filter_Filter
|
||||||
return md5($rawSign);
|
return md5($rawSign);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function enter($db, $result)
|
private function enter($db, $result)
|
||||||
{
|
{
|
||||||
$this->user = $result;
|
$this->user = $result;
|
||||||
$random = rand(0, 1024 * 1024);
|
$random = rand(0, 1024 * 1024);
|
||||||
$db->executeQuery("UPDATE users SET sid = '$random' WHERE id_user = " . $result->getInt('id_user'));
|
$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["access"] = $result->getInt('id_user'); // id_user
|
||||||
$_SESSION["random"] = $random; // id_user
|
$_SESSION["random"] = $random; // id_user
|
||||||
$_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME] = $this->getBrowserSign();
|
$_SESSION[self::SESSION_BROWSER_SIGN_KEYNAME] = $this->getBrowserSign();
|
||||||
|
|
@ -131,13 +131,13 @@ class Filter_Login extends Filter_Filter
|
||||||
if ($logged) {
|
if ($logged) {
|
||||||
return json_encode(array('result' => 'ok', 'message' => "Авторизация успешна"));
|
return json_encode(array('result' => 'ok', 'message' => "Авторизация успешна"));
|
||||||
} else {
|
} else {
|
||||||
return json_encode(array('result' => 'fail', 'message' => "Неправильное имя пользователя или пароль"));
|
return json_encode(array('result' => 'fail', 'message' => "Неправильное имя пользователя или пароль"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$logged) {
|
if (!$logged) {
|
||||||
// Параметры при неправильной авторизации
|
// Параметры при неправильной авторизации
|
||||||
// Действия по умолчанию !! Возможно переход на форму регистрации
|
// Действия по умолчанию !! Возможно переход на форму регистрации
|
||||||
if ($request->get('mode') == 'ajax') {
|
if ($request->get('mode') == 'ajax') {
|
||||||
if (!$this->requestIsWhite($request)) {
|
if (!$this->requestIsWhite($request)) {
|
||||||
return json_encode(array('result' => 'fail', 'message' =>"NOT_AUTHORIZED"));
|
return json_encode(array('result' => 'fail', 'message' =>"NOT_AUTHORIZED"));
|
||||||
|
|
@ -157,7 +157,7 @@ class Filter_Login extends Filter_Filter
|
||||||
$text = $this->processor->execute($request);
|
$text = $this->processor->execute($request);
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------
|
/* ---------------------
|
||||||
* Проверка на попадание реквеста в белый список
|
* Проверка на попадание реквеста в белый список
|
||||||
*/
|
*/
|
||||||
|
|
@ -166,9 +166,11 @@ class Filter_Login extends Filter_Filter
|
||||||
$module = $request->get('module');
|
$module = $request->get('module');
|
||||||
$action = $request->get('action');
|
$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)) {
|
if (file_exists($file)) {
|
||||||
$whiteList = json_decode(file_get_contents($file), true);
|
$whiteList = json_decode(file_get_contents($file), true);
|
||||||
|
|
||||||
if (in_array($action, $whiteList)) {
|
if (in_array($action, $whiteList)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -177,4 +179,3 @@ class Filter_Login extends Filter_Filter
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue