4 нояб. 2018 г., 10:08

управление группами пользователей

Кто сможет подсказать как лучше реализовать самостоятельный переход/добавление пользователя в ту или иную группу? То есть пользователь сам может менять в лк (в контексте web) группу в которой находится.
У объекта $modx->user есть нативные методы для управления группами (joinGroup, leaveGroup, isMember и т.п.).
Вот пример с добавлением пользователя в группу в оффдоке: https://docs.modx.com/revolution/2.x/administering-your-site/security/user-groups

Его можно значительно упростить в случае с авторизованным пользователем:
$modx->user->joinGroup($groupId); // Или $modx->user->joinGroup($groupName);
По умолчанию будет назначена роль member. Можно передать другую роль вторым параметром и ранг третьим. Остается только решить вопрос как обновлять текущего пользователя. У меня в shopModxBox был для этого процессор (он для примера, обновление групп в нем не предусмотрено): https://github.com/MODX-Club/ShopModxBox/blob/master/core/components/modxsite/processors/web/users/own_profile/update.class.php

Покинуть группу:
$modx->user->leaveGroup(16);
Остальные методы работы с группами надо смотреть в исходном коде (они не все задокументированы). https://github.com/modxcms/revolution/blob/2.x/core/model/modx/moduser.class.php#L572
Остается только решить вопрос как обновлять текущего пользователя - не понял, а в чем тогда вопрос? Использовать ли для этого процессоры?
Нет, я это у тому, что просто так нативных средств в MODX для обновления текущего пользователя весьма не много. Я не знаю как у тебя это сейчас выполняется, через процессоры или компоненты типа Login или Office. То есть для тебя главное - это чтобы была php-точка для вызова представленного кода.
я стараюсь придерживаться, так сказать, "религии" modxclub.ru - соответственно и вопрос мой заключается в том, что по какому пути или методу, по мнению клуба, правильно делать.
Артем, я так и не понял, ты достаточно ответов получил на свои вопросы? Получается сделать задуманное?
да, все норм, спасибо)

Добавить комментарий