Удаление привилегий на уровне административного объекта#
Используется чтобы массово удалить привилегии на указанный административный объект для всех ролей, а также пересчитать права пользователей. Применяется при отмене доступа к устаревшему функционалу.
Место применения: Приложение "Администратор" > Настройки > Администрируемые объекты > [Администрируемый объект] > Редактировать > Дискретные ограничения доступа
Внимание
В текущем виде содержит незавершённый массив arr = [...] и захардкоженный код объекта Act_MainMenuAvi — перед использованием необходимо завершить логику и указать корректные значения.
Тип: JEXL-скрипт
var arr = [...];
var ia = sql(`
select opg.id, opg.idacrole from Btk_AcRoleObjPrivTypeGrant opg
join Btk_AcObject o on o.id = opg.idacobject
where opg.bhasaccess = 1 and o.scode = 'Act_MainMenuAvi'
`).asList();
for(rv:ia) {
if (!arr.contains(rv.idacrole)){
arr.add(rv.idacrole);
}
var rr = Btk_AcRoleApi.load(rv.idacrole);
Btk_AcRoleApi.unSync(rr);
var rop = Btk_AcRoleObjPrivTypeGrantApi.load(rv.id);
Btk_AcRoleObjPrivTypeGrantApi.delete(rop);
}
commit();
Btk_AcRoleGrantRegApi.lazyUpdateAll();
commit();
for(id:arr) {
Btk_UserApi.recalcPrivsMulti(Btk_AcRoleApi.getUsersByRole(id));
}
commit();