Николай Ланец
30 мая 2016 г., 18:12

Добавить всех пользователей без группы в группу по умолчанию

Еще один кейс: на сайте куча пользователей без какой-либо группы. Надо их всех закинуть в определенную группу.
К слову, это еще один логический минус системы политик безопасности 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";
Николай, это готовый плагин?
Это не плагин, это готовый код на выполнение, чтобы всех пользователей не распределенных перенести в определенную группу, то есть это когда пользователи уже давно зарегистрировались. А если у вас задача, чтобы при регистрации пользователь попадал в определенную группу, так это, на сколько я знаю, просто в Login параметр передается и все.
Сорри, проверял доступы другого пользователя, забыл разлогиниться))

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