У объекта $modx->user есть нативные методы для управления группами (joinGroup, leaveGroup, isMember и т.п.).
Вот пример с добавлением пользователя в группу в оффдоке: https://docs.modx.com/revolution/2.x/administering-your-site/security/user-groups
Его можно значительно упростить в случае с авторизованным пользователем:
По умолчанию будет назначена роль member. Можно передать другую роль вторым параметром и ранг третьим. Остается только решить вопрос как обновлять текущего пользователя. У меня в shopModxBox был для этого процессор (он для примера, обновление групп в нем не предусмотрено): https://github.com/MODX-Club/ShopModxBox/blob/master/core/components/modxsite/processors/web/users/own_profile/update.class.php
Покинуть группу:
Остальные методы работы с группами надо смотреть в исходном коде (они не все задокументированы). https://github.com/modxcms/revolution/blob/2.x/core/model/modx/moduser.class.php#L572