ItemByClassId(ClassId: MetabaseObjectClass): IMetabaseClassSecurityDescriptor;
ClassId. Тип объектов.
Свойство ItemByClassId возвращает параметры дескриптора безопасности по типу объектов.
Свойство доступно только для чтения.
Для выполнения примера убедитесь, что в менеджере безопасности содержится пользователь USER и администратору разрешены все операции с типом объектов «Экспресс-отчет» при настройке параметров управления доступом на вкладке «Дискреционный контроль».
Добавьте ссылки на системные сборки Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
MB: IMetabase;
SecDescrs: IMetabaseClassesSecurityDescriptors;
ClassSecDescr: IMetabaseClassSecurityDescriptor;
MS: IMetabaseSecurity;
SecDescr: ISecurityDescriptor;
Lic: Object;
Type: AceType;
Sid: ISid;
Begin
MB := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MS := MB.Security;
// Получим параметры безопасности типа объектов «Экспресс-отчет»
SecDescrs := MS.MetabaseClassesSecurityDescriptors;
ClassSecDescr := SecDescrs.ItemByClassId(MetabaseObjectClass.KE_CLASS_EXPRESSREPORT);
SecDescr := ClassSecDescr.Descriptor;
SecDescr.Edit;
// Запретим любые операции с экспресс-отчетами пользователю USER
Type := AceType.AccessDenied;
Sid := MB.Security.ResolveName("USER").Sid;
SecDescr.Acl.AddAce(Type, Sid, MetabaseObjectPredefinedRights.All);
SecDescr.Apply(False);
// Сохраним изменения
MS.Apply;
// Освободим лицензию
Lic := Null;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
SecDescrs: IMetabaseClassesSecurityDescriptors;
ClassSecDescr: IMetabaseClassSecurityDescriptor;
MS: IMetabaseSecurity;
SecDescr: ISecurityDescriptor;
Lic: Object;
Type: AceType;
Sid: MetabaseSid;
Begin
MB := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
MS := MB.Security;
// Получим параметры безопасности типа объектов «Экспресс-отчет»
SecDescrs := MS.MetabaseClassesSecurityDescriptors;
ClassSecDescr := SecDescrs.ItemByClassId[MetabaseObjectClass.KE_CLASS_EXPRESSREPORT];
SecDescr := ClassSecDescr.Descriptor;
SecDescr.Edit();
// Запретим любые операции с экспресс-отчетами пользователю USER
Type := AceType.aceAccessDenied;
Sid := MB.Security.ResolveName("USER").Sid;
SecDescr.Acl.AddAce(Type, Sid, 1);
SecDescr.Apply(False);
// Сохраним изменения
MS.Apply();
// Освободим лицензию
Lic := Null;
End Sub;
После выполнения примера пользователю USER будут запрещены любые операции с экспресс-отчетами.
См. также: