#std737¶
Проверка прав доступа¶
1.¶
Если в конфигурации много ролей (от нескольких десятков), не используйте ролевую настройку видимости в элементах форм:
- просмотр/редактирование реквизитов по ролям;
- пользовательскую видимость полей формы по ролям;
- использование команд по ролям.
Рекомендуемые подходы:
- при больших различиях вида и функциональности формы делайте отдельные формы под нужные наборы прав;
- при небольших различиях выполняйте проверку прав в коде.
Учитывайте, что программное управление видимостью может замедлить открытие формы.
Это позволяет:
- упростить работу с элементами, которые могут исчезать из коллекции
Элементы; - повысить устойчивость кода к изменению состава ролей;
- упростить контроль использования ролей в конфигурации.
Проверки¶
#v8cs:form-item-visible-settings-by-roles
2.¶
Не используйте ролевую настройку видимости в командном интерфейсе конфигурации, интерфейсе основного раздела и рабочей области начальной страницы.
Вместо этого настраивайте права на:
- разделы командного интерфейса;
- общие формы;
- объекты, включенные в командный интерфейс или рабочую область.
Это повышает предсказуемость интерфейса и упрощает расследование ошибок.
3.¶
Для проверки прав в коде используйте метод ПравоДоступа.
Неправильно
Правильно
Такой подход повышает устойчивость кода к пересмотру состава ролей.
Проверки¶
4.1.¶
Если роль не дает прав на объекты метаданных и служит только маркером дополнительного права, используйте РольДоступна.
При использовании БСП рекомендуется Пользователи.РолиДоступны.
Пример без БСП:
Пример с БСП:
4.2.¶
Проектируйте роли с учетом влияния на командный интерфейс.
Если чтение/запись идет в #std485: привилегированном режиме, не задавайте в роли права с RLS-условием ГДЕ ЛОЖЬ.
В таких случаях проверяйте наличие роли.
Пример: на общую форму Заметка права дают роли ДобавлениеИзменениеЗаметок и ЧтениеЗаметок, а доступ к данным выполняется в привилегированном режиме.
Тогда по ПравоДоступа нельзя надежно определить право добавления заметок.
Неправильно
Добавлять в роль ДобавлениеИзменениеЗаметок фиктивные права на регистр Заметки с ГДЕ ЛОЖЬ и проверять:
Правильно
Если РольДоступна("ДобавлениеИзменениеЗаметок") Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда
Либо с БСП:
См. также¶
Проверки¶
#acc:336 #acc:341 #acc:393 #acc:394 #acc:395 #acc:457 #acc:460 #acc:461 #acc:514 #acc:515