Добрый день! Начал разбираться с механизмом раздачи прав на записи в таблицах и возникли два вопроса.
1. В представлении фигурирует таблица dbo.tbl_UserAdminUnit что это за таблица в какой момент она заполняется?

SELECT  ID,
FROM   dbo.tbl_Account AS P WITH (nolock)
WHERE    
   EXISTS
  (SELECT     ID, RecordID, AdminUnitID, CanRead, CanWrite, CanDelete, CanChangeAccess
                            FROM          dbo.tbl_AccountRight AS R WITH (nolock)
                            WHERE      (RecordID = P.ID) AND EXISTS
                                                       
  (SELECT     AdminUnitID, AdminUnitName, UserName
   FROM          dbo.tbl_UserAdminUnit AS U WITH (nolock)
   WHERE      (R.AdminUnitID = AdminUnitID) AND (UserName = SYSTEM_USER)))

2. Как происходит добавление записей( прав) на группы к которым относится пользователь?

Нравится

6 комментариев

В tbl_UserAdminUnit регистрируется соответсвие групп пользователей и имен пользователей.

Павав в Terrasoft раздаются посредством раздела [Администрирование].
Права могут быть розданы как в разрезе пользователей так и групп.
Права могут быть розданы на разделы, отдельные поля в таблицах и записи в таблицах.
Следует учесть, что разрешающие права, в случае использования SQL, являются приоритетными. Тоесть, если пользователю выставлены разрешения в разрезе одной из групп - он будет иметь разрешение на данное действие, вне зависимости от настроек в других группах.

1. момент она заполняется и где используется?
2. Николай как работает механизм в общем я понимаю. Мне именно нужно узнать сам механизм как проверяется при добавлении записи конкретным пользователем кому еще раздать права на это запись там же идет проверка какая то) потому что из представления выбираются записи по условию наличия записи в таблицы Right.

Заполняется данная таблица при запуске Terrasoft. Где, в линейный список, разворачивается иерархия из tbl_AdminUnit по текущему пользователю. Делается это для оптимизации быстродействия. Все представления для проверки прав доступа используют всегда tbl_UserAdminUnit. Т.е. разворачивание иерархии (что является не быстрым процесом) выполняется только один раз.

Что касается настроек доступа к созданым записям:
При добавлении записи в раздел, пользователю, который создал запись система предоставляет полные права. Затем анализируются права доступа "по умолчанию" и на деталь [Доступ], созданой записи, копируются права из раздела [Права доступа по умолчанию].

"Клименко Николай" написал:копируются права из раздела (Права доступа по умолчанию).

это делается на стороне SQL в триггерах или приложением?

Права "по умолчанию" раздаются посредством триггеров для таблиц.

Показать все комментарии