получить роль и группу пользователя
Доброго времени суток. Подскажите пожалуйста (если не далеко лезть) код, которым можно получить роль и группу пользователя авторизированного на сайте. Спасибо
Комментарии: 15
Получить особо ничего не получится, без запросов в БД, но можно проверять, присутствует ли юзер в определенных группах.
Для этого есть метод modX::isMember().
Для этого есть метод modX::isMember().
Вот и мне понадобилась такая возможность. А использование такое: Делаю блог и хочу чтобы у автора статьи была подпись вроде «Гость», «Копирайтер», «Администратор». Я не особо кодер, поэтому запрос к БД сам не напишу. Может как-то через сниппет можно pdoUsers? Самое близкое по теме было тут. Делаю через Tickets.
Автор статьи может быть одновременно членом групп Копирайтер и Администраторы. Чего выводить?
Вообще я не собирался делать так, чтобы они пересекались. Админ — один. Райтеров много. А можно даже и обе роли вывести, не страшно, тогда допустим понятно, что человек и пишет, и управляет, вон какой молодец)
Микросниппет, который выводит группы пользователей через запятую, если их несколько
$groups = implode(',',$modx->user->getUserGroupNames());
return $groups;
Спасибо. Тоже отличный вариант. А я сначала искал немного другое, политики, которые применены к этому пользователю, но видимо изначально у меня был плохой план)
Может есть проще метод и более распространенный? Типа там использовать поле extends у юзера или еще что-то…
isMember — самый нормальный вариант
$user = $modx->getObject('modUser',array('active' => true, 'id' => $userid )); // подставляй айди пользователя
if($user == null)
return "Пользователь не найден!";
if($user->isMember('Гость')) {
} elseif($user->isMember('Копирайтер')) {
}
и т.д.
если нужно для каждой что-то выводить, то убери else из условий, проверяй только if'ом
Спасибо. Попробую. Боялся ветка мертва, ан нет)
пробуй) я этот пример тебе с рабочего сайта скинул
Работает, но. Теперь встал другой вопрос, как получить id чтобы передать его в сниппет. [[+id]] — получается id статьи, [[+modx.user.id]] — id текущего юзера. А вот id именно автора статьи… Я использую для вывода сниппет TicketMeta (из Tickets), все плейсхолдеры кроме id нормально выводят.
docs.modx.pro/components/tickets/snippets/ticketmeta
наверное, поможет &getUser=1
я этим сниппетом не пользуюсь, так что 100% рабочий вариант не предоставлю
наверное, поможет &getUser=1
я этим сниппетом не пользуюсь, так что 100% рабочий вариант не предоставлю
Нет то, эта опция по умолчанию включена. Всё равно спасибо.
Проанализировав код сниппета стало ясно, что нужный плейсхолдер id автора такой: [[+createdby]]
del
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.