Права пользователей

Права пользователей задаются с помощью ролей, разрешений и предикатов:

С помощью ролей предоставляется доступ к объектам системы: справочникам, итогам, обработчикам, документам определенного подтипа, модулям экранной логики и принтерам. Роли организованы следующим образом:

разрешения и предикаты привязываются к ролям;

роли структурированы в справочник древовидного типа;

дерево ролей имеет структуру многие ко многим: у роли может быть много потомков и много родителей;

роль-родитель обладает всеми правами, предоставляемыми ролью-потомком, включая разрешения и предикаты.

Предикаты используются в случае, когда необходимо ограничить предоставляемый ролью доступ к элементам объекта типа справочник, документ или итог. Если эти ограничения можно выразить SQL-запросом – для них применяется предикат. Например, предоставить менеджеру по продажам возможность работать только с розничными клиентами, но не с оптовыми и корпоративными.

Разрешениями регулируются ситуации, когда необходимо ограничить доступ к каким-либо действиям: есть разрешение – можно выполнить действие, нет – нельзя. Фактически это контрольные точки в программном коде, в которых осуществляется проверка наличия у пользователей соответствующих разрешений.

Модель данных, реализующих механизмы прав пользователей, выглядит следующим образом:

Users_Tables_Roles

table В системной таблице ACC_OPERATIONS хранится перечень доступных над объектами системы операций:

ID – идентификатор операции, также является ее номером в битовой маске;

NAME – название операции.

35_important

Перечень операций, хранящихся в таблице ACC_OPERATIONS:

id

1

2

4

8

операция

чтение

добавление

изменение

удаление

Идентификатор операции одновременно является номером ее бита в битовой маске. Если операция над объектом задается битовой маской, то, например, для ее значения "0111" разрешены все перечисленные операции, кроме удаления, а значение "0001" дает доступ только на чтение.