CurrentDomainSubjectAddState(Type: SecuritySubjectType): DomainSubjectAddState;
CurrentDomainSubjectAddState[Prognoz.Platform.Interop.Metabase.SecuritySubjectType]: Prognoz.Platform.Interop.Metabase.DomainSubjectAddState;
Type. Тип субъектов безопасности, для которых необходимо определить параметры добавления.
Свойство CurrentDomainSubjectAddState определяет настройки добавления доменных субъектов безопасности.
Заданные настройки в свойстве CurrentDomainSubjectAddState будут применяться для всех добавляемых пользователей. Данное свойство является аналогом свойства IMetabase.CurrentDomainSubjectAddState.
Для выполнения примера предполагается наличие домена «GROUP1», в котором содержатся пользователи с сочетанием «TEST*» в наименовании. Соответствующие пользователи также созданы на сервере БД и имеют определенные гранты на объекты текущего репозитория.
Добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).
Sub UserProc;
Var
MB: IMetabase;
MBSec: IMetabaseSecurity;
SubSearch: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Lic: Object;
Begin
MB := MetabaseClass.Active;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
MBSec := MB.Security;
// Получим объект для поиска пользователей
SubSearch := MBSec.NewSubjectsSearch;
SubSearch.NameCriteria := "GROUP1\TEST*";
// Установим поиск только доменных пользователей
SubSearch.AreaIncludeDB := False;
SubSearch.AreaIncludeNT := True;
SubSearch.SubjectCriteria(SecuritySubjectType.User) := True;
SubSearch.ExecuteSearch;
// Получим пользователей
Subjects := SubSearch.Subjects;
If Subjects.Count > 0 Then
// Установим параметры добавления доменных пользователей
MBSec.CurrentDomainSubjectAddState(SecuritySubjectType.User) :=
DomainSubjectAddState.MakeExternalOn
Or DomainSubjectAddState.ManageDBGrantsOff
Or DomainSubjectAddState.Keep;
// Добавим всех найденных пользователей
For Each Subject In Subjects Do
MBSec.AddNTSubject(Subject);
End For;
// Сохраним изменения
MBSec.Apply;
// Освободим лицензию
Lic := Null;
End If;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MBSec: IMetabaseSecurity;
SubSearch: ISecuritySubjectsSearch;
Subjects: ISecuritySubjects;
Subject: ISecuritySubject;
Lic: Object;
Begin
MB := Params.Metabase;
// Получим лицензию для возможности работы с менеджером безопасности
Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
MBSec := MB.Security;
// Получим объект для поиска пользователей
SubSearch := MBSec.NewSubjectsSearch();
SubSearch.NameCriteria := "GROUP1\TEST*";
// Установим поиск только доменных пользователей
SubSearch.AreaIncludeDB := False;
SubSearch.AreaIncludeNT := True;
SubSearch.SubjectCriteria[SecuritySubjectType.sstUser] := True;
SubSearch.ExecuteSearch();
// Получим пользователей
Subjects := SubSearch.Subjects;
If Subjects.Count > 0 Then
// Установим параметры добавления доменных пользователей
MBSec.CurrentDomainSubjectAddState[SecuritySubjectType.sstUser] :=
DomainSubjectAddState.dsasMakeExternalOn
Or DomainSubjectAddState.dsasManageDBGrantsOff
Or DomainSubjectAddState.dsasKeep;
// Добавим всех найденных пользователей
For Each Subject In Subjects Do
MBSec.AddNTSubject(Subject);
End For;
// Сохраним изменения
MBSec.Apply();
// Освободим лицензию
Lic := Null;
End If;
End Sub;
После выполнения примера будет осуществлен поиск всех доменных пользователей, наименование которых удовлетворяет маске «GROUP1\TEST*». Найденные пользователи будут добавлены в список пользователей репозитория. Для пользователей будет установлен признак подключаемых с сервера. При раздаче привилегий и прав на объекты репозитория соответствующие гранты в базе репозитория раздаваться не будут.
См. также: