Особенность добавления прав на модули для пользователей

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 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 идентификатором нужного пользователя.