Удаление привилегий на уровне административного объекта

Удаление привилегий на уровне административного объекта#

Используется чтобы массово удалить привилегии на указанный административный объект для всех ролей, а также пересчитать права пользователей. Применяется при отмене доступа к устаревшему функционалу.

Место применения: Приложение "Администратор" > Настройки > Администрируемые объекты > [Администрируемый объект] > Редактировать > Дискретные ограничения доступа

Внимание

В текущем виде содержит незавершённый массив 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();