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

Материал из Umicms
Перейти к:навигация, поиск
 
Строка 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 идентификатором нужного пользователя.