Created
March 23, 2023 17:05
-
-
Save luckydevilru/8ba3d9700186bdc7de3b9b69499ea5b9 to your computer and use it in GitHub Desktop.
iblock element rights SetRights bitrix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
` | |
<? | |
$arTasks = CIBlockRights::GetRightsList(); // получаем массив уровней доступа | |
$object = new CIBlockElementRights($iblockID, $elementID); // создаём объект прав, передав в него id инфоблока и id элемента | |
$arRights = $object->GetRights(); // получим права для элемента | |
$object->SetRights($arRights); // установим права для | |
Array( | |
[1] => Array ( | |
[GROUP_CODE] => G2 // группа с id 2 | |
[DO_INHERIT] => Y // наследовать права | |
[IS_INHERITED] => Y // права унаследованы | |
[OVERWRITED] => 0 // признак перезаписи | |
[TASK_ID] => 29 //id уровня доступа | |
[XML_ID] => // дополнительный ID, не обязательный параметр. Можно использовать для фильтрации | |
[ENTITY_TYPE] => iblock // тип сущности инфоблок | |
[ENTITY_ID] => 4 //id сущности | |
) | |
[2] => Array ( | |
[GROUP_CODE] => U1 // пользователь с id 1 | |
[DO_INHERIT] => Y | |
[IS_INHERITED] => N | |
[OVERWRITED] => 0 | |
[TASK_ID] => 28 | |
[XML_ID] => | |
[ENTITY_TYPE] => element // тип сущности элемент | |
[ENTITY_ID] => 43 //id сущности | |
) | |
) | |
?> | |
` | |
Коды групп [GROUP_CODE]: | |
U1 - User (пользователь с 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 (все авторизованные пользователи); | |
Если вы желаете только дополнить набор прав, то необходимо передать не только новые значения, но и старые, т.е. в полученный массив $arRights добавить еще 1 элемент с ключем n0. Примерно такого содержания: | |
` | |
<? | |
Array ( | |
[n0] => Array ( // "n".$i - это важно, по "n" метод определяет, что нужно создать новый набор прав | |
[GROUP_CODE] => U22 // пользователь с id 22 | |
[TASK_ID] => 34 // уровень доступа | |
) | |
) | |
?> | |
` | |
Если новых прав будет больше чем 1, то остальные ключи будут n1, n2 ,n3 и т.д. | |
Ну и для примера рабочий вариант: | |
<? | |
$blockID = 4; | |
$elementID = 43; | |
$UserID = 13; | |
$GroupID = 3; | |
$object = new CIBlockElementRights($blockID, $elementID); // создаём объект прав для нужного элемента | |
$arRights = $object->GetRights(); // получаем текущие права | |
$arRights["n0"] = array( | |
"GROUP_CODE" =>"U".$UserID, | |
"TASK_ID" => 35 | |
); | |
$arRights["n1"] = array( | |
"GROUP_CODE" =>"G".$GroupID, | |
"TASK_ID" => 34 | |
); | |
$object->SetRights($arRights); // устанавливаем права элемента | |
?>` | |
Как, программно узнать, может ли пользователь читать секцию, или писать в нее, или писать в конкретный элемент, или удалять конкретный элемент? | |
Все просто, за это отвечают два метода: | |
`CIBlockSectionRights::UserHasRightTo($IBLOCK_ID, $SECTION_ID, $permission); | |
CIBlockElementRights::UserHasRightTo($IBLOCK_ID, $ELEMENT_ID, $permission);` | |
Они возвращают для текущего авторизованного пользователя булево значение — true/false. На входе принимает три параметра: ID инфоблока, ID секции/элемента (если ноль, то подразумевается проверка прав на добавление), и, собственно, уровень доступа, который мы проверяем на «имеет ли». |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment