Сниппет проверки прав доступа по группам
Простой сниппет для проверки прав доступа, при выполнении которого выводится чанк.
Может пригодится для вывода кнопок редактирования/добавления страницы соответствующим группам (журналисты, модераторы и тд).
+ существует проверка доступа, если авторизованный пользователь = автор страницы.
Доступные параметры:
&allowGroups — id групп, которые должны получить доступ к чанку
&allowAuthor — 1 или 0, определяет, выдавать ли доступ к чанку автору страницы
&tpl — название подгружаемого шаблона при выполнении условий
Пример вызова:
Сниппет (getAccess):
P.s. Буду рад любым советам по оптимизации кода.)
Может пригодится для вывода кнопок редактирования/добавления страницы соответствующим группам (журналисты, модераторы и тд).
+ существует проверка доступа, если авторизованный пользователь = автор страницы.
Доступные параметры:
&allowGroups — id групп, которые должны получить доступ к чанку
&allowAuthor — 1 или 0, определяет, выдавать ли доступ к чанку автору страницы
&tpl — название подгружаемого шаблона при выполнении условий
Пример вызова:
[[!getAccess? &allowGroups=`1,3` &allowAuthor=`1` &tpl=`gallery.Edit`]]Сниппет (getAccess):
<?php
$user = (!empty($userId)) ? $modx->getObject('modUser', $userId) : $modx->user;
if (is_object($user) && $modx->user->isAuthenticated('web')) {
$allowGroups = explode(",", $allowGroups);
$userGroups = array();
$userGroups = $modx->user->getUserGroups();
if ($allowAuthor == '1' && $modx->resource->get('createdby') == $user->get('id')) {
return $modx->getChunk($tpl);
break;
}
foreach($allowGroups as $check) {
if (in_array($check, $userGroups)) {
return $modx->getChunk($tpl);
break;
}
}
return;
}
else {
return;
}P.s. Буду рад любым советам по оптимизации кода.)
Комментарии: 7
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
— в этом нет смысла, т.к. createdby это итак id, т.е. достаточно
Можно вопрос: а почему вы решили свой сниппет написать, а не использовать Personalize?
Да и атмосфера modx'а и написания сайта на нем способствует написанию своих решений, как по мне..)
Тут такой возможности нету, да?