IMetabaseUpdateObjectNode.AccessToken

Синтаксис Fore

AccessToken: IAccessToken;

Синтаксис Fore.NET

AccessToken: Prognoz.Platform.Interop.Metabase.IAccessToken;

Описание

Свойство AccessToken возвращает метку доступа объекта, сохраняемую в обновлении.

Комментарии

Актуально при использовании мандатного метода контроля доступа. Условия для использования свойства:

При соблюдении указанных условий, используя свойство AccessToken, можно изменить параметры метки доступа для объекта. Измененные параметры будут сохранены в обновлении.

Параметры метки доступа будут копироваться из исходного объекта (IMetabaseObjectDescriptor->SecurityDescriptor->AccessToken), если хотя бы одно из условий не выполняется.

Пример Fore

Для выполнения примера предполагается наличие в репозитории объектов с идентификаторами «OBJ1» и «OBJ2». Добавьте ссылку на системную сборку «Metabase».

Sub UserProc;
Var
    Mb: IMetabase;
    Obj: IMetabaseObjectDescriptor;
    Upd: IMetabaseUpdate;
    Nd: IMetabaseUpdateObjectNode;
    RootFolder: IMetabaseUpdateFolderNode;
    ObjDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    Tok: IAccessToken;
Begin
    Mb := MetabaseClass.Active;
    ObjDesc := MB.ItemById("OBJ1");
    SecDesc := ObjDesc.SecurityDescriptor;
    Tok := SecDesc.AccessToken;
    Upd := Mb.CreateUpdate;
    RootFolder := Upd.RootFolder;
    Nd := RootFolder.Add(MetabaseUpdateNodeType.Object) As IMetabaseUpdateObjectNode;
    Upd.AllowReplaceSD := True;
    Nd.UpdatePart := MetabaseObjectUpdatePart.ReplaceSecurityDescriptor;
    Nd.AccessTokenOptions := MetabaseUpdateAccessTokenOptions.Manual;
    Obj := Mb.ItemById("OBJ2").Bind;
    Nd.Object := Obj;
    Nd.AccessToken.Assign(Tok);
    Upd.SaveToFileNF("С:\Update.pefx");
    Upd := Mb.CreateUpdate;
    Upd.LoadFromFileNF("С:\Update.pefx");
    Upd.Apply;
End Sub UserProc;

При выполнении примера происходит установка созданного обновления. После выполнения примера метка доступа объекта «OBJ2» заменится на метку доступа объекта «OBJ1».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Metabase;

Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Obj: IMetabaseObjectDescriptor;
    Upd: IMetabaseUpdate;
    Nd: IMetabaseUpdateObjectNode;
    RootFolder: IMetabaseUpdateFolderNode;
    ObjDesc: IMetabaseObjectDescriptor;
    SecDesc: ISecurityDescriptor;
    Tok: IAccessToken;
Begin
    Mb := Params.Metabase;
    ObjDesc := MB.ItemById["OBJ1"];
    SecDesc := ObjDesc.SecurityDescriptor;
    Tok := SecDesc.AccessToken;
    Upd := Mb.CreateUpdate();
    RootFolder := Upd.RootFolder;
    Nd := RootFolder.Add(MetabaseUpdateNodeType.untObject) As IMetabaseUpdateObjectNode;
    Upd.AllowReplaceSD := True;
    Nd.UpdatePart := MetabaseObjectUpdatePart.moupReplaceSecurityDescriptor;
    Nd.AccessTokenOptions := MetabaseUpdateAccessTokenOptions.muatoManual;
    Obj := Mb.ItemById["OBJ2"].Bind();
    Nd.Object := Obj;
    Nd.AccessToken.Assign(Tok);
    Upd.SaveToFileNF("D:\" + "Update.pefx");
    Upd := Mb.CreateUpdate();
    Upd.LoadFromFileNF("D:\" + "Update.pefx", UpdateLoadMode.ulmReplace);
    Upd.Apply(Null);
End Sub;

См. также:

IMetabaseUpdateObjectNode