Особенность добавления прав на модули для пользователей
Актуально для версии 2.9.5
В UMI.CMS есть некоторая особенность добавления прав на модули для пользователей системы. К примеру, возникла необходимость создать пользователя, который должен редактировать фотографии в модуле "Фотогалереи", добавлять новые фотографии, альбомы.
Если необходимо, чтобы после создания пользователя, он смог редактировать уже существующие альбомы, то при добавлении пользователя, до нажатия кнопки "Добавить", необходимо в секции модуля "Фотогалереи" проставить все три чекбоска, а уже потом нажать кнопку Добавить. Если необходимо чтобы пользователь мог создать новый альбом, а потом в нем фотографии, но был бы запрет на редактирование уже существующих альбомов и фотографий, то сначала создается пользователь, после его создания редактируются права на модуль "Фотогалереи", ставят полные права на этот модуль. Тогда пользователь сможет создать новый альбом и фотографии в нем, но не сможет редактировать фотографии в других альбомах и не сможет в них создавать новые фотографии.
Важно также понимать принцип наследования прав, пользователь сможет добавить страницу в какой-то раздел (Альбом) только в том случае, если у него есть права на редактирование данного раздела (Альбома).
Если необходимо, чтобы один пользователь мог добавлять фотографии только в один Альбом_1, а другой пользователь во второй альбом Альбом_2, то в "Правах доступа" этих альбомов добавьте пользователей, воспользовавшись строкой поиска в данной системной группе. После выполнения указанных действия, каждый из пользователей сможет добавлять фотографии только в установленные для них альбомы, они смогут редактировать только те фотографии, которые они добавили, но не смогут редактировать фотографии из других альбомов, потому что на фотографии в других альбомах для них не будет стоять права на редактирование страниц (фотографий).
Пользователи, входящие в системную группу Супервайзеры, которая уже создана при установке системы, имеют права на редактирование любых страниц системы.
Пользователя не обязательно привязывать к какой-либо Группе, это НЕ обязательное условие по добавлению Пользователя.
Если у Вас уже есть добавленные пользователи, которым нужно проставить права на страницы, соответствующие правам на модули, но нет желания пересоздавать их, то Вы можете воспользоваться следующим служебным скриптом:
include 'standalone.php';
$objectsCollection = umiObjectsCollection::getInstance();
$permissionsCollection = permissionsCollection::getInstance();
$group = $objectsCollection->getObject(123);
$users = new selector('objects');
$users->types('object-type')->name('users', 'user');
$users->where('groups')->equals($group);
$users = $users->result();
foreach($users as $user){
$id = $user->getId();
$permissionsCollection->setAllElementsDefaultPermissions($id);
}
Данный код Вы можете поместить в php файл, положить его в корневую директорию и выполнить через адресную строку. Суть работы макроса - в переменную $group мы передаем объект группы пользователей, потом получаем выборку всех пользователей, принадлежащих данной группе. Потом мы для каждого такого пользователя проставляем права на все страницы, соответствующие правам на модули c помощью метода setAllElementsDefaultPermissions()[1]. Для применения скрипта замените число 123 идентификатором нужной группы пользователей.
Если нужно поменять права не у группы, а у какого-то конкретного пользователя, то можно выполнить следующий код:
include 'standalone.php';
$objectsCollection = umiObjectsCollection::getInstance();
$permissionsCollection = permissionsCollection::getInstance();
$user = $objectsCollection->getObject(456);
$id = $user->getId();
$permissionsCollection->setAllElementsDefaultPermissions($id);
, только нужно будет заменить число 456 идентификатором нужного пользователя.