Fi1osof 30 мая 2016 1 3
Еще один кейс: на сайте куча пользователей без какой-либо группы. Надо их всех закинуть в определенную группу.

К слову, это еще один логический минус системы политик безопасности MODX, так как уровни доступов пользователей настраиваются только на основании групп пользователей, а тут получается, что пользователь и не аноним (неавторизованные пользователи в группе анонимов находятся, которой можно задавать права доступов), и ни в какой другой группе. Без группы им вообще нельзя права задать, и получается, что часто такие пользователи вообще прав меньше имеют, чем анонимы даже.

Готовый код:
<?php

ini_set('max_execution_time', 0);
ignore_user_abort(true);

print '<pre>';

// Формируем запрос на выборку пользователей, не состоящих ни в одной группе
$q = $modx->newQuery('modUser');
$q->leftJoin('modUserGroupMember', 'UserGroupMembers');

$q->where(array(
    "UserGroupMembers.id"   => null,
));

// Подсчет количества таких пользователей
// print "<br />". $modx->getCount('modUser', $q);

$groupId = 5;       // ID группы пользователей, в которую надо добавить пользователя
$roleId = null;     // ID роли
$rank = null;

foreach($modx->getIterator("modUser", $q) as $user){
    
    // Добавляем пользователя в группу
    $user->joinGroup($groupId, $roleId, $rank);
}

print "<br />OK";
3 комментария
m
mr Disel 27 июня 2016г в 04:32 #
Николай, это готовый плагин?
Fi1osof1
Fi1osof 27 июня 2016г в 11:34 #
Это не плагин, это готовый код на выполнение, чтобы всех пользователей не распределенных перенести в определенную группу, то есть это когда пользователи уже давно зарегистрировались. А если у вас задача, чтобы при регистрации пользователь попадал в определенную группу, так это, на сколько я знаю, просто в Login параметр передается и все.
Fi1osof1
Fi1osof 27 июня 2016г в 11:44 #
Сорри, проверял доступы другого пользователя, забыл разлогиниться))
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.