GetSubjectEffectiveRights(Subject: ISecuritySubject): Integer;
Subject. Субъект безопасности, эффективные права которого необходимо получить.
Метод GetSubjectEffectiveRights возвращает эффективные права указанного пользователя на показатель.
Эффективные права включают в себя все операции, на которые для пользователя установлено явное разрешение. Значение, возвращаемое данным методом, представляет из себя маску доступа. Значение маски является 8-ми байтовым двоичным числом, приведенным в десятичную форму. Для проверки значения маски необходимо использовать значения перечисляемого типа MetabaseObjectPredefinedRights в комбинации с CubeSpecificRights. Для разбора значения маски необходимо реализовать пользовательскую функцию, которая позволит сопоставить отдельные биты маски соответствующим значениям перечислений. Пример работы с маской доступа представлен в разделе «Работа с маской доступа». При раздаче прав на показатель используются соответствующие операции Read и Write.
Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «OBJ_RUBRICATOR», в которой определены сегменты и в таблице метасправочника фактов содержится значение «3» в столбце «Факты».
Для выполнения примера добавьте ссылки на системные сборки: Cubes, Metabase.
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(Null) As IRubricatorInstance;
Fac := rubInst.GetFactData(3).Factor;
MS := MB.Security;
User := MS.ResolveName("ADMIN") As IMetabaseUser;
Debug.WriteLine(Fac.GetSubjectEffectiveRights(User));
End Sub UserProc;
После выполнения примера в консоль будут выведены эффективные права пользователя ADMIN на показатель фактов с ключом «3». Права будут представлены в десятичном виде.
См. также: