ApplyWithInfo(InfoUserToUpdate: IMetabaseUsersUpdate): MetabaseSecurityApplyInformation;
ApplyWithInfo(InfoUserToUpdate: Prognoz.Platform.Interop.Metabase.IMetabaseUsersUpdate) : Prognoz.Platform.Interop.Metabase.MetabaseSecurityApplyInformation
InfoUserToUpdate. Список пользователей, которых необходимо обновить. На входе данный параметр должен быть пустым.
Метод ApplyWithInfo применяет политику безопасности и в случае необходимости возвращает список пользователей, которых необходимо обновить.
В случае если после применения метод возвращает MetabaseSecurityApplyInformation.NoSysGrants, то параметр InfoUserToUpdate будет содержать список пользователей, которых необходимо обновить. Под применением политики безопасности понимается сохранение всех изменений, содержащихся в настройках менеджера безопасности.
Для выполнения примера подключите к модулю системную сборку Metabase.
Sub UserProc;
Var
MB: IMetabase;
Sec: IMetabaseSecurity;
Policy: IMetabasePolicy;
Group: IMetabaseGroup;
User: IMetabaseUser;
PS: IPasswordCredentials;
InfoUserToUpdate: IMetabaseUsersUpdate;
Result: Integer;
Begin
MB := MetabaseClass.Active;
Sec := MB.Security;
Policy := Sec.Policy;
Group := Sec.ResolveName("ТЕСТОВАЯ ГРУППА") As IMetabaseGroup; //.AddGroup("Тестовая группа");
User := Sec.ResolveName("TESTUSER") As IMetabaseUser;
Policy.Privilege("ВХОД").Grant(User);
Policy.Privilege("ЧТЕНИЕ").Grant(User);
Group.AddMember(User);
Result := Sec.ApplyWithInfo(InfoUserToUpdate);
If Result = 1 Then
Sec.UpdateUsers(InfoUserToUpdate);
End If;
End Sub UserProc;
После выполнения примера пользователь будет добавлен в указанную группу пользователей и станет обладателем заданных привилегий.
Указанная процедура является точкой входа для .NET-сборки.
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Sec: IMetabaseSecurity;
Policy: IMetabasePolicy;
Group: IMetabaseGroup;
User: IMetabaseUser;
PS: IPasswordCredentials;
InfoUserToUpdate: IMetabaseUsersUpdate;
Result: Integer;
Begin
MB := Params.Metabase;
Sec := MB.Security;
Policy := Sec.Policy;
Group := Sec.ResolveName("ТЕСТОВАЯ ГРУППА") As IMetabaseGroup;
User := Sec.ResolveName("TESTUSER") As IMetabaseUser;
Policy.Privilege["ВХОД"].Grant(User);
Policy.Privilege["ЧТЕНИЕ"].Grant(User);
Group.AddMember(User);
Result := Sec.ApplyWithInfo(InfoUserToUpdate) As Integer;
If Result = 1 Then
Sec.UpdateUsers(InfoUserToUpdate);
End If;
End Sub;
После выполнения примера пользователь будет добавлен в указанную группу пользователей и станет обладателем заданных привилегий.
См. также: