Как настроить 401 код вместо 404 для гостя в MODX REVO

#MODx, #MODx Revo
Как настроить 401 код вместо 404 для гостя в MODX REVO

В MODX Revolution есть понятие "Группы ресурсов" - ресурсы, которые доступны для определенных Групп пользователей (как правило, авторизированных). Но если не залогиненный пользователь пытается получить доступ к странице из такой группы - MODX возвращает 404 ошибку вместо 401, выводя сообщение о том, что страница не найдена, а правильным поведением в данной ситуации является вывод сообещния, что для доступа к данной странице надо авторизироваться на сайте.

Как настроить 401 код вместо 404

Для страниц, где важно неавторизированному пользователю отображать форму для входа вместо 404 страницы, можно отказаться от использования группы ресурсов и в начало шаблона встроить свой рукописный некешируемый сниппет. Код такого сниппета приведен ниже:

if (isset($modx->user->id) && $modx->user->id > 0 // user must be logged in
    && ( $modx->user->isMember('Пользователи') 
        || $modx->user->isMember('Administrator') )){
        // user вошел как пользователь или админ - все ок
        return;
}
// не ок - возвращаем 401 ошибку
$modx->sendUnauthorizedPage();

Вызов сниппета в шаблоне

Если мы назвали сниппет к примеру redirectGuestToLogin, то в самом верху нужного шаблона вызываем его как:

[[!redirectGuestToLogin]]

Количество просмотров: 1 286

Автор статьи: Екатерина Шушкевич.

Руководитель проектов, технический директор, практикующий разработчик, преподаватель. Опыт в WEB-разработке — более 15 лет.

Поделиться в соцсетях:

Статьи по теме

MODX Revo - Access Denied

Как в MODX Revo побороть ошибку "Доступ запрещен" для политики доступа. Ошибка возникает при сохранении ресурса - 200 OK, Access denied

Читать далее ...