Обязательный вход, закрытые разделы
Приветствую.
Возможно, вопрос банальный, но несколько дней поиска не дали ответа.
С MODX работаю меньше недели, решил попробовать его, как замену Drupal.
Нужен пинок в нужную сторону, пока не могу разобраться в некоторых вещах.
Общая задача такая:
Спасибо.
Возможно, вопрос банальный, но несколько дней поиска не дали ответа.
С MODX работаю меньше недели, решил попробовать его, как замену Drupal.
Нужен пинок в нужную сторону, пока не могу разобраться в некоторых вещах.
Общая задача такая:
- Сделать сайт с обязательным входом (заглушка с формой логина вместо сайта, до момента входа). Сейчас организован вход и регистрация компонентом Login, но как полностью закрыть сайт — не разобрался.
- Каждому пользователю вручную админом назначаются «проекты», ресурсы которых он может видеть и создавать. В том числе тикеты (компонент Ticket), некоторым пользователям надо дать доступ ко всем проектам. Где почитать про систему контроля доступа? Очень сложно понять контексты, роли, группы пользователей, политики доступа. По отдельности — всё вроде ясно, но как они взаимодействуют — весь мозг сломал.
Спасибо.
Комментарии: 16
1) По пунктам:
— При регистрации через Login нужно заносить пользователя в определенную группу (Users).
— Выставить группе анонимных пользователей права Load only на все контексты, где нужно запрашивать авторизацию
— Добавить в системной настройке unauthorized_page (403 ошибка) айди страницы с формой авторизации
После чего всех неавторизованных пользователей, при запросе на закрытую страницу, будет перебрасывать на страницу авторизации.
//Примечание: для альтернативы, если не нужна переадресация, можно создать простой сниппет (допустим, getAccess) и вызывать его на каждой странице.
Сниппет getAccess:
Пример:
Из минусов такого метода — поисковые системы проиндексируют кучу дублей одинаковых страниц с формой авторизации.
2. modstore.pro/packages/ecommerce/payandsee — может быть, это вам поможет? В противном случае — придется настраивать свои сниппеты, завязанные на extend-полях пользователя.
— При регистрации через Login нужно заносить пользователя в определенную группу (Users).
— Выставить группе анонимных пользователей права Load only на все контексты, где нужно запрашивать авторизацию
— Добавить в системной настройке unauthorized_page (403 ошибка) айди страницы с формой авторизации
После чего всех неавторизованных пользователей, при запросе на закрытую страницу, будет перебрасывать на страницу авторизации.
//Примечание: для альтернативы, если не нужна переадресация, можно создать простой сниппет (допустим, getAccess) и вызывать его на каждой странице.
Сниппет getAccess:
<?php
$user = (!empty($userId)) ? $modx->getObject('modUser', $userId) : $modx->user;
if (is_object($user) && $modx->user->isAuthenticated('web')) {
return $content;
}
else {
return $modx->getChunk('название_чанка');
}
— соответственно, нужно создать чанк с формой авторизации и обозначить для сниппета параметр &content, в котором будет храниться html-код. Пример:
<html>
<head>
[[$meta]]
</head>
<body>
[[!getAccess? &content=`
//ваш хтмл-код
`]]
</body>
</html>
(как альтернатива, можно переписать строчку сниппета «return $content» на «return $modx->getChunk($content);» — в таком случае, при вызове в поле &content нужно будет указывать название чанка, который отобразится авторизованному пользователю).Из минусов такого метода — поисковые системы проиндексируют кучу дублей одинаковых страниц с формой авторизации.
2. modstore.pro/packages/ecommerce/payandsee — может быть, это вам поможет? В противном случае — придется настраивать свои сниппеты, завязанные на extend-полях пользователя.
Вот здесь хорошо описано, как сделать страницы только для зарегистрированных пользователей.
Простой плагин closeWebSite, вешаем на событие OnLoadWebDocument
В плагине цифра 8 — это id страницы входа, цифра 1 — id главной страницы.
В плагине цифра 8 — это id страницы входа, цифра 1 — id главной страницы.
<?php
$logged = $modx->user->hasSessionContext('web');
$isLoginPage = $modx->resource->get('id') == 8;
if($logged){
if($isLoginPage){
$url = $modx->makeUrl(1);
$modx->sendRedirect($url);
}
return;
}
if(!$logged && !$isLoginPage) {
$modx->sendForward(8);
}
То, что надо! Спасибо.
А как требовать авторизацию на всех страницах, кроме одной? С id 30 например.
Внимательно посмотреть на код в комментарии выше.
МОжет пригодиться — шпаргалка по правам пользователя file.modx.pro/files/b/9/2/b9223a4ef907c00a07cca6fd1666dddd.pdf
Перевод отличной заметки от Боба Рея про модель безопасности MODX.
Not Found
The requested URL /blog/documentation/869.html was not found on this server.
The requested URL /blog/documentation/869.html was not found on this server.
Умер давно тот сайт, придётся теперь гуглить самостоятельно.
По-моему по данной ссылке объем статьи значительно ниже, чем в первоисточнике.
goo.gl/P4CPLg
Тут повторяющиеся снимки одного т того же ресурса по датам. Это просто статья которая канула вместе с сайтом старого сообщества. Видимо в архиве по датам разные копии, отличающиеся комментариями. Объем я не сравнивал.
Тут повторяющиеся снимки одного т того же ресурса по датам. Это просто статья которая канула вместе с сайтом старого сообщества. Видимо в архиве по датам разные копии, отличающиеся комментариями. Объем я не сравнивал.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.