IRubricatorFactor.GetSubjectEffectiveRights

Синтаксис

GetSubjectEffectiveRights(Subject: ISecuritySubject): Integer;

GetSubjectEffectiveRights(Prognoz.Platform.Interop.Metabase.ISecuritySubject): System.Int32;

Параметры

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

Описание

Метод GetSubjectEffectiveRights возвращает эффективные права указанного пользователя на показатель.

Комментарии

Эффективные права включают в себя все операции, на которые для пользователя установлено явное разрешение. Значение, возвращаемое данным методом, представляет из себя маску доступа. Значение маски является 8-ми байтовым двоичным числом, приведенным в десятичную форму. Для проверки значения маски необходимо использовать значения перечисляемого типа MetabaseObjectPredefinedRights в комбинации с CubeSpecificRights. Для разбора значения маски необходимо реализовать пользовательскую функцию, которая позволит сопоставить отдельные биты маски соответствующим значениям перечислений. Пример работы с маской доступа представлен в разделе «Работа с маской доступа». При раздаче прав на показатель используются соответствующие операции Read и Write.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «OBJ_RUBRICATOR», в которой определены сегменты и в таблице метасправочника фактов содержится значение «3» в столбце «Факты».

Для выполнения примера добавьте ссылки на системные сборки: Metabase, Cubes, Rds (для примера на Fore.NET).

Sub UserProc;
Var
    MB: IMetabase;
    RubInst: IRubricatorInstance;
    Rub: IRubricator;
    Fac: IRubricatorFactor;
    MS: IMetabaseSecurity;
    User: IMetabaseUser;
Begin
    MB := MetabaseClass.Active;
    Rub := MB.ItemById(
"OBJ_RUBRICATOR").Bind As IRubricator;
    RubInst := (Rub 
As IMetabaseObjectDescriptor).Open(NullAs IRubricatorInstance;
    Fac := rubInst.GetFactData(
3).Factor;
    MS := MB.Security;
    User := MS.ResolveName(
"ADMIN"As IMetabaseUser;
    Debug.WriteLine(Fac.GetSubjectEffectiveRights(User));
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    RubInst: IRubricatorInstance;
    Rub: IRubricator;
    Fac: IRubricatorFactor;
    MS: IMetabaseSecurity;
    User: IMetabaseUser;
Begin
    MB := Params.Metabase;
    Rub := MB.ItemById[
"OBJ_RUBRICATOR"].Bind() As IRubricator;
    RubInst := (Rub 
As IMetabaseObjectDescriptor).Open(NullAs IRubricatorInstance;
    Fac := rubInst.GetFactData(
3, DictionaryGetDataOptions.dgdoNone).Factor;
    MS := MB.Security;
    User := MS.ResolveName(
"ADMIN"As IMetabaseUser;
    System.Diagnostics.Debug.WriteLine(Fac.GetSubjectEffectiveRights(User));
End Sub;

После выполнения примера в консоль будут выведены эффективные права пользователя ADMIN на показатель фактов с ключом «3». Права будут представлены в десятичном виде.

См. также:

IRubricatorFactor