Права пользователей задаются с помощью ролей, разрешений и предикатов:
•С помощью ролей предоставляется доступ к объектам системы: справочникам, итогам, обработчикам, документам определенного подтипа, модулям экранной логики и принтерам. Роли организованы следующим образом:
▪разрешения и предикаты привязываются к ролям;
▪роли структурированы в справочник древовидного типа;
▪дерево ролей имеет структуру многие ко многим: у роли может быть много потомков и много родителей;
▪роль-родитель обладает всеми правами, предоставляемыми ролью-потомком, включая разрешения и предикаты.
•Предикаты используются в случае, когда необходимо ограничить предоставляемый ролью доступ к элементам объекта типа справочник, документ или итог. Если эти ограничения можно выразить SQL-запросом – для них применяется предикат. Например, предоставить менеджеру по продажам возможность работать только с розничными клиентами, но не с оптовыми и корпоративными.
•Разрешениями регулируются ситуации, когда необходимо ограничить доступ к каким-либо действиям: есть разрешение – можно выполнить действие, нет – нельзя. Фактически это контрольные точки в программном коде, в которых осуществляется проверка наличия у пользователей соответствующих разрешений.
Модель данных, реализующих механизмы прав пользователей, выглядит следующим образом:
В системной таблице ACC_OPERATIONS хранится перечень доступных над объектами системы операций:
•ID – идентификатор операции, также является ее номером в битовой маске;
•NAME – название операции.
Перечень операций, хранящихся в таблице ACC_OPERATIONS:
Идентификатор операции одновременно является номером ее бита в битовой маске. Если операция над объектом задается битовой маской, то, например, для ее значения "0111" разрешены все перечисленные операции, кроме удаления, а значение "0001" дает доступ только на чтение. |