Каким образом можно переопределить права для элемента ИБ?
Т.е., например, даны права на чтение на уровне ИБ группе ID=11, мне нужно спрятать элемент от всех кроме некоторых пользователей.
Пытаюсь переопределить права вот так
пробовал делать сначала
Безрезультатно
Не пойму как реализовано штатное переопределение прав
Т.е., например, даны права на чтение на уровне ИБ группе ID=11, мне нужно спрятать элемент от всех кроме некоторых пользователей.
Пытаюсь переопределить права вот так
Код |
---|
function chmodSectionAccess($bid, $sid, $group_code, $tid, $mod, $overwrite = 0) { $bid = intval($bid); // идентификатор инфоблока $sid = intval($sid); // идентификатор раздела $group_code = trim($group_code); // группкод $tid = intval($tid); // идентификатор уровня доступа $mod = ($mod === "Y"); // дать/убрать (Y|N) права на раздел if ($bid > 0 && $sid > 0 && strlen($group_code) > 0 && $tid > 0) { // получаем текущий массив прав $ob = new CIBlockElementRights($bid, $sid); $ar = $ob->GetRights(); pp($ar);die(); if ($mod) { // дополняем в массив новый элемент $ar["n0"] = array("GROUP_CODE" => $group_code, "TASK_ID" => $tid, "XML_ID" => "API", "OVERWRITED" => intval($overwrite)); } else { // находим совпадающее со входными данными и исключаем из массива foreach ($ar as $i => $r) { if ($r["GROUP_CODE"] === $group_code && $r["TASK_ID"] === $tid) unset($ar[$i]); } } // записываем новые права из массива (другие не наследуемые будут удалены) $ob->SetRights($ar); return TRUE; } return FALSE; } //устанавливаем права "Нет доступа" на элемент chmodSectionAccess($arParams["IBLOCK_ID"], $ELEMENT_ID, 'G11', 38, "Y", 1); |
Код |
---|
chmodSectionAccess($arParams["IBLOCK_ID"], $ELEMENT_ID, 'G11', 73, "N"); |
Не пойму как реализовано штатное переопределение прав