ISecurityDescriptor.GetEffectiveRights

Синтаксис

GetEffectiveRights(Subject: ISecuritySubject): Integer;

Параметры

Subject. Субъект безопасности, для которого необходимо вычислить эффективные права доступа.

Описание

Метод GetEffectiveRights осуществляет вычисление эффективных прав доступа указанного субъекта безопасности к объекту репозитория.

Комментарии

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

Эффективные права включают в себя все операции, на которые для пользователя установлено явное разрешение. Значение, возвращаемое данным методом, представляет из себя маску доступа. Значение маски является 4-x байтовым двоичным числом, приведенным к десятичному виду. Для проверки значения маски необходимо использовать значения перечисления MetabaseObjectPredefinedRights. В этом перечислении содержатся основные и дополнительные операции, на которые можно раздавать права. Для определенных классов объектов доступны специфические операции. Для проверки специфических операций, в зависимости от класса объекта, можно использовать значения следующих перечислений:

Основные, дополнительные и специфические операции, доступные для определенных типов объектов, представлены в разделе «Типы событий».

Для разбора значения маски необходимо реализовать пользовательскую функцию, которая позволит сопоставить отдельные биты маски соответствующим значениям перечислений. Пример работы с маской доступа представлен в разделе «Работа с маской доступа».

Пример

Для выполнения примера предполагается наличие в репозитории объекта с идентификатором «Obj_1». Среди субъектов безопасности, созданных в менеджере безопасности текущего репозитория, имеется пользователь «TestUser».

Sub UserProc;
Var
    MB: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    Subj: ISecuritySubject;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    Subj := MB.Security.ResolveName("TestUser");
    MDesc := MB.ItemById("Obj_1");
    SecDesc := MDesc.SecurityDescriptor;
    i := SecDesc.GetEffectiveRights(Subj);
End Sub UserProc;

После выполнения примера в переменной «i» будет содержаться значение, соответствующее эффективным правам, которые розданы указанному пользователю на объект «Obj_1».

См. также:

ISecurityDescriptor