Разграничение прав login и страница авторизации.
Доброго времени суток уважаемое сообщество.
Решил на новом проекте сделать все правильно, без вызова в шаблоне сниппета логина.
marabar.ru/login-v-modx-revolution.html
Взял за основу данный мануал. В общем то все работает. Взять ресурс «редактор», поставить у него галочку в группе пользователей Users, и все как бы почти как надо. Для пользователя администратор ресурс будет доступен, для пользователя в группе users будет доступен. Для анонима и любого другого пользователя будет отдаваться 404 ошибка. А вот тут я уже прошу вашей помощи. Как изменить отдачу 404 на такие ресурсы? Вполне логично что там должна быть авторизационная форма, ресурс с идентификатором n допустим. Спасибо.
Решил на новом проекте сделать все правильно, без вызова в шаблоне сниппета логина.
marabar.ru/login-v-modx-revolution.html
Взял за основу данный мануал. В общем то все работает. Взять ресурс «редактор», поставить у него галочку в группе пользователей Users, и все как бы почти как надо. Для пользователя администратор ресурс будет доступен, для пользователя в группе users будет доступен. Для анонима и любого другого пользователя будет отдаваться 404 ошибка. А вот тут я уже прошу вашей помощи. Как изменить отдачу 404 на такие ресурсы? Вполне логично что там должна быть авторизационная форма, ресурс с идентификатором n допустим. Спасибо.
Комментарии: 2
Мне конечно ничего не мешает в настройках сайта 404 ошибке дать id страничке входа, но это же неправильно и некрасиво?
modstore.pro/packages/users/office — это не для рекламы дополнения, а для прилагаемой к ней статье и «неверном» назначении прав по-умолчанию в modx'е. Там же и про ошибку замену 404 на аксесс дениед.
В крайнем случае, можно сделать самописный сниппет:
Сниппет getAccess
Вызов:
В крайнем случае, можно сделать самописный сниппет:
Сниппет getAccess
<?php
$user = (!empty($userId)) ? $modx->getObject('modUser', $userId) : $modx->user;
if (is_object($user) && $modx->user->isAuthenticated('web')) {
$allowGroups = explode(",", $allowGroups);
$userGroups = $user->getUserGroupNames();
foreach($allowGroups as $check) {
if(in_array($check, $userGroups)) {
$accessComplete = 1;
return $modx->getChunk($tpl);
}
}
if($accessComplete != 1) {
$url = $modx->makeUrl($redirectId);
$modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
}
else {
$url = $modx->makeUrl($redirectId);
$modx->sendRedirect($url,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
Вызов:
[[!getAccess? &allowGroups=`Administrator,Users` &tpl=`скрытый чанк` &redirectId=`айди_редиректа`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.