Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Дополню эту информацию типами и способами формирования идентификаторов субъектов ("group codes" в терминологии расширенных прав битрикса):
Пример возвращаемого массива прав элемента:
Пример массива для установки новых прав на объект:
Следует отметить, что если вы хотите не заменить, а дополнить существующие права элемента, то в метод SetRights() нужно передавать массив не только с новыми правами, но и со старыми, иначе метод удалит все права, которых нет в переданном ему массиве. Важный момент - ключи массива старых прав должны быть сохранены, так как они являются идентификаторами существующих прав, осторожней с array_merge(), для склеивания массивов с сохранением ключей юзайте $array1+$array2.
Таким образом, чтобы зачистить все права элемента, можно в SetRights() передать просто пустой массив. Другой способ зачистки ненужных существующих прав - это модификация массива существующих прав с добавлением к ненужным правам элемента "DO_CLEAN" => "Y". Хотя первый способ, просто не передавать ставшие ненужными права, проще.
Можно не только добавлять новые права и удалять старые, но и изменять существующие. Для этого нужно передать в SetRights() массив с уже существующими идентификаторами, но с новыми параметрами этих прав.
Назад в раздел
Наверх
то ждем ваше обращение в нашей службе тех поддержки.
Расширенные права доступа: Формирование идентификаторов субъектов, программная установка прав доступа
Ряд аспектов о новых правах доступа уже описывался в Максима Смирнова, в Евгения Жукова и в Антона Долганина, может кого-то упустил, пардон.Дополню эту информацию типами и способами формирования идентификаторов субъектов ("group codes" в терминологии расширенных прав битрикса):
-
U1 - Us er (пользователь с ID = 1);
-
G1 - Group (группа пользователей с ID = 1);
-
D1 - Department (сотрудники отдела с ID = 1);
-
DR2 - Department Recursive (сотрудники отдела с ID = 2 и его подотделов);
-
SG3_A - Sonet Group (админ (владелец) группы соцсети с ID = 3);
-
SG3_E - Sonet Group (модераторы группы соцсети с ID = 3);
-
SG3_K - Sonet Group (все члены группы соцсети с ID = 3);
-
CR - Creator (создатель (автор) элемента);
-
AU - Authorized Users (все авторизованные пользователи);
$ob = new CIBlockElementRights($iblockId, $elementId); // создаём объект прав и инициализируем нашим элементом $ar = $ob->GetRights(); // получаем массив текущих прав элемента $ob->SetRights($ar); // устанавливаем права элемента |
Array ( [230] => Array // ID набора прав ( [GROUP_CODE] => G37 // описанный выше группкод [DO_INHERIT] => Y // производить наследование [IS_INHERITED] => Y // признак наследованных прав [OVERWRITED] => 0 // признак перезаписи [TASK_ID] => 46 // ID уровня доступа [XML_ID] => // дополнительный произвольный ID, по которому потом, например, можно фильтровать установленные вами права [ENTITY_TYPE] => iblock // тип сущности [ENTITY_ID] => 74 // ID сущности ) ) |
Array ( [n0] => Array // "n".$i - это важно, по "n" метод определяет, что нужно создать новый набор прав ( [GROUP_CODE] => CR // группкод "Автор" [TASK_ID] => 29 // уровень доступа [XML_ID] => blablabla // наш произвольный ид ) ) |
Таким образом, чтобы зачистить все права элемента, можно в SetRights() передать просто пустой массив. Другой способ зачистки ненужных существующих прав - это модификация массива существующих прав с добавлением к ненужным правам элемента "DO_CLEAN" => "Y". Хотя первый способ, просто не передавать ставшие ненужными права, проще.
Можно не только добавлять новые права и удалять старые, но и изменять существующие. Для этого нужно передать в SetRights() массив с уже существующими идентификаторами, но с новыми параметрами этих прав.
Назад в раздел
Подписаться на новые материалы раздела:
Загрузка...
Наверх