IMetabaseObjectDescriptor.CheckAndAuditOperation

Синтаксис

CheckAndAuditOperation(Operation: Integer; Comment: String; State: MetabaseObjectAuditOperationState): Decimal;

Параметры

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

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

State. Вариант аудита операции.

Описание

Метод CheckAndAuditOperation проверяет права доступа текущего пользователя на указанные операции и протоколирует результат проверки в соответствии с выбранным вариантом аудита.

Комментарии

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

Метод возвращает уникальный ключ записи, который вместе с записью заносится в протокол доступа.

Если необходимо проверить права доступа на операцию пользовательского класса, то используйте метод IMetabaseCustomObject.CheckAndAuditOperation.

Пример

Для выполнения примера в репозитории предполагается наличие регламентного отчёта с идентификатором REPORT.

Добавьте ссылки на системные сборки: Metabase, Ui.

Sub UserProc;
Var
    MB: IMetabase;
    MObj: IMetabaseObjectDescriptor;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemById("REPORT");
    Try
        MObj.CheckAndAuditOperation(
            MetabaseObjectPredefinedRights.Write Or MetabaseObjectPredefinedRights.Print,
            "Проверка прав пользователя" ,
            MetabaseObjectAuditOperationState.ForceDeny);
    Except On E: Exception Do
        Debug.WriteLine(E.Message);
    End Try;
End Sub UserProc;

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

См. также:

IMetabaseObjectDescriptor