CheckAndAuditOperation(Operation: Integer; Comment: String; State: MetabaseObjectAuditOperationState): Decimal;
CheckAndAuditOperation(Operation: integer; Comment: string; State: Prognoz.Platform.Interop.Metabase.MetabaseObjectAuditOperationState): decimal;
Operation. Маска проверяемой/протоколируемой операции, наличие прав на которые, необходимо проверить для текущего пользователя. Для формирования значения маски необходимо использовать значения перечисления MetabaseObjectPredefinedRights. В этом перечислении содержатся основные и дополнительные операции, на которые можно раздавать права и вести аудит доступа. Для определенных классов объектов доступны специфические операции. Для использования специфических операций, в зависимости от класса объекта, в маске можно использовать значения следующих перечислений:
CalculatedCubeSpecificRights - специфические операции, доступные для вычисляемых кубов;
CubeLoaderSpecificRights - специфические операции, доступные для загрузчика данных в куб;
CubeSpecificRights - специфические операции, доступные для различных видов кубов;
CustomObjectSpecificRights - специфические операции, доступные для объектов пользовательских классов;
DataBaseSpecificRights - специфические операции, доступные для объекта репозитория - База данных;
DictionarySpecificRights - специфические операции, доступные для объектов репозитория - Справочник НСИ и Составной справочник НСИ;
MDCalcSpecificRights - специфические операции, доступные для объекта репозитория - Многомерный расчет на сервере БД;
ProblemSpecificRights - специфические операции, доступные для объекта контейнера моделирования - Задача моделирования;
ProcedureSpecificRights - специфические операции, доступные для объекта репозитория - Процедура;
TableSpecificRights - специфические операции, доступные для следующих объектов репозитория - Таблица, Представление, Журнал, Присоединенная таблица;
ValidationSpecificRights - специфические операции, доступные для объекта репозитория - Правило валидации и Группа валидаций.
Comment. Комментарий, который заносится в протокол доступа;
State. Вариант аудита операции.
Метод CheckAndAuditOperation проверяет права доступа текущего пользователя на указанные операции и протоколирует результат проверки в соответствии с выбранным вариантом аудита.
Если у текущего пользователя отсутствуют права хотя бы на одну из проверяемых операций или выбран вариант аудита, запрещающий выполнение операции (ForceDeny, ForceDenyAndAudit), то будет сгенерирована исключительная ситуация. В зависимости от имеющихся настроек аудита схемы и выбранного варианта аудита проверяемой операции (State) в протокол доступа может быть добавлена запись с неуспешным результатом.
Метод возвращает уникальный ключ записи, который вместе с записью заносится в протокол доступа.
Если необходимо проверить права доступа на операцию пользовательского класса, то используйте метод IMetabaseCustomObject.CheckAndAuditOperation.
Для выполнения примера предполагается наличие формы и расположенной на ней кнопки с наименованием «Button1». В репозитории имеется регламентный отчет с идентификатором «Report_11».
Добавьте ссылки на системные сборки: Metabase, Ui.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
MB: IMetabase;
MObj: IMetabaseObjectDescriptor;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("Report_11");
Try
MObj.CheckAndAuditOperation(MetabaseObjectPredefinedRights.Write Or
MetabaseObjectPredefinedRights.Print,
"Проверка прав пользователя" ,
MetabaseObjectAuditOperationState.ForceDeny);
Except
On E: Exception Do
WinApplication.InformationBox(E.message);
End Try;
End Sub Button1OnClick;
Imports Prognoz.Platform.Interop.Ui;
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
MB: IMetabase;
MObj: IMetabaseObjectDescriptor;
WinAppCls: WinApplicationClass = New WinApplicationClassClass();
Begin
MB := Self.Metabase;
MObj := MB.ItemById["Report_11"];
Try
MObj.CheckAndAuditOperation((MetabaseObjectPredefinedRights.moprWrite Or
MetabaseObjectPredefinedRights.moprPrint) As Integer,
"Проверка прав пользователя" ,
MetabaseObjectAuditOperationState.meobauopstForceDeny);
Except
On Ef: Exception Do
WinAppCls.InformationBox(Ef.message, New IWin32WindowForeAdapter(Self));
End Try;
End Sub;
После выполнения примера будет сгенерирована исключительная ситуация (недостаточно прав для выполнения операций). В протокол доступа будет добавлена запись с неуспешным результатом, если в настройках аудита схемы включен аудит для типа проверяемого объекта.
См. также: