Особенность добавления прав на модули для пользователей — различия между версиями
Mad grant (обсуждение | вклад) |
Mad grant (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | '''Актуально для версии 2.9.5''' | ||
+ | |||
В UMI.CMS есть некоторая особенность добавления прав на модули для пользователей системы. К примеру, возникла необходимость создать пользователя, который должен редактировать фотографии в модуле "Фотогалереи", добавлять новые фотографии, альбомы. | В UMI.CMS есть некоторая особенность добавления прав на модули для пользователей системы. К примеру, возникла необходимость создать пользователя, который должен редактировать фотографии в модуле "Фотогалереи", добавлять новые фотографии, альбомы. | ||
Строка 11: | Строка 13: | ||
Пользователя не обязательно привязывать к какой-либо Группе, это НЕ обязательное условие по добавлению Пользователя. | Пользователя не обязательно привязывать к какой-либо Группе, это НЕ обязательное условие по добавлению Пользователя. | ||
− | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]] | + | |
+ | Если у Вас уже есть добавленные пользователи, которым нужно проставить права на страницы, соответствующие правам на модули, но нет желания пересоздавать их, то Вы можете воспользоваться следующим служебным скриптом: | ||
+ | |||
+ | <source lang="php"> | ||
+ | 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); | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | Данный код Вы можете поместить в php файл, положить его в корневую директорию и выполнить через адресную строку. | ||
+ | Суть работы макроса - в переменную $group мы передаем объект группы пользователей, потом получаем выборку всех пользователей, принадлежащих данной группе. Потом мы для каждого такого пользователя проставляем права на все страницы, соответствующие правам на модули c помощью метода setAllElementsDefaultPermissions()[http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_prav_dostupa/permissionscollection/setallelementsdefaultpermissions/]. Для применения скрипта замените число 123 идентификатором нужной группы пользователей. | ||
+ | |||
+ | Если нужно поменять права не у группы, а у какого-то конкретного пользователя, то можно выполнить следующий код: | ||
+ | |||
+ | <source lang="php"> | ||
+ | include 'standalone.php'; | ||
+ | |||
+ | $objectsCollection = umiObjectsCollection::getInstance(); | ||
+ | $permissionsCollection = permissionsCollection::getInstance(); | ||
+ | |||
+ | $user = $objectsCollection->getObject(456); | ||
+ | $id = $user->getId(); | ||
+ | $permissionsCollection->setAllElementsDefaultPermissions($id); | ||
+ | </source> | ||
+ | |||
+ | , только нужно будет заменить число 456 идентификатором нужного пользователя. | ||
+ | |||
+ | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:API]][[Категория:Модуль Пользователи]] |
Текущая версия на 09:25, 28 января 2014
Актуально для версии 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 идентификатором нужного пользователя.