table В таблице PREDICATES хранится перечень предикат:

NAME – название предиката;

DESCRIPTION – описание предиката;

ACCESS_OBJ_ID (FK) – ссылка на объект, доступ к которому ограничивает предикат;

SQL – SQL-запрос, который ограничивает доступ.

table В таблице ROLE_PREDICATES хранится перечень предикат привязанных к ролям:

PREDICATE_ID (FK) – предикат, привязываемый к роли;

ROLE_ID (FK) – роль, к которой привязывается предикат;

OPERATION_ID (FK) – операция, которую можно совершать над элементами объекта, доступ к которому ограничивает предикат;

REVOKED – отмена привязки предиката к роли. Используется для отмены наследуемой ролью-родителем от потомка привязки предиката.

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

предоставить роли этого пользователя доступ к справочнику контрагентов;

создать предикат, накладывающий ограничения на доступ к справочнику контрагентов;

привязать его к роли пользователя.

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

table Для удобства работы содержимое таблицы ROLE_PREDICATES автоматически реплицируется в таблицу ROLE_PREDICATES_EXT, где для каждой роли хранится список всех ее предикат указанный в явном виде с учетом того, что роль-родитель обладает предикатами ролей-потомков, если они для нее не отменены свойством REVOKED:

PREDICATE_ID (FK) – ссылка на предикат;

ACCESS_OBJ_ID (FK) – ссылка на объект, доступ к которому ограничивает предикат;

ROLE_ID (FK) – ссылка на роль;

OPERATIONS – битовая маска, содержащая перечень операций, которые можно совершать над элементами объекта, доступ к которому ограничивает предикат.

Все описанные ранее свойства разрешений выполняются и для предикатов:

роль-родитель получает те же предикаты, что и ее роли-потомки;

отмена предиката для роли-потомка отменяет его и для родителя.