IMetabaseObjectDescriptor.CheckAndAuditLabel

Синтаксис

CheckAndAuditLabel(Operation: Integer; Comment: String; Var Label: ISecurityDocumentLabel);

CheckAndAuditLabel(Operation: integer; Comment: string; Var Label: Prognoz.Platform.Interop.Metabase.ISecurityDocumentLabel);

Параметры

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

Comment. Комментарий, который заносится в протокол доступа;

Label. Переменная, в которую будут помещены параметры метки безопасности.

Описание

Метод CheckAndAuditLabel проверяет права доступа текущего пользователя на указанные операции и заносит запись в протокол доступа с указанным комментарием, а также вычисляет параметры метки безопасности, используемой при печати и экспорте объектов репозитория.

Комментарии

Метка безопасности вычисляется при включенном мандатном доступе к объектам.

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

Пример

Для выполнения примера предполагается наличие в репозитории объекта с идентификатором «Obj_1».

Добавьте ссылку на системную сборку Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    SecLabel: ISecurityDocumentLabel;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemById("Obj_1");
    MObj.CheckAndAuditLabel(
        MetabaseObjectPredefinedRights.Delete Or
        MetabaseObjectPredefinedRights.Access,
        "Проверка наличия прав у текущего пользователя на операции Удаление и Изменение прав" ,
        SecLabel);
    If SecLabel.IsON Then
    Debug.WriteLine(SecLabel.Label);
    Debug.WriteLine(SecLabel.LabelDescription);
    Debug.WriteLine(SecLabel.TreatSectionAsDocument);
    Debug.WriteLine(SecLabel.User.Name);
End If;
End Sub UserProc;
Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
    SecLabel: ISecurityDocumentLabel;
Begin
    MB := Params.Metabase;
    MObj := MB.ItemById[
"Obj_1111"];
    MObj.CheckAndAuditLabel(
    MetabaseObjectPredefinedRights.moprDelete 
As Integer Or
    MetabaseObjectPredefinedRights.moprAccess 
As Integer,
    
"Проверка наличия прав у текущего пользователя на операции Удаление и Изменение прав" , Var SecLabel);
    
If SecLabel.IsON Then
        System.Diagnostics.Debug.WriteLine(SecLabel.Label);
        System.Diagnostics.Debug.WriteLine(SecLabel.LabelDescription);
        System.Diagnostics.Debug.WriteLine(SecLabel.TreatSectionAsDocument);
        System.Diagnostics.Debug.WriteLine(SecLabel.User.Name);
    
End If;
End Sub;

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

См. также:

IMetabaseObjectDescriptor