IMetabaseLink.CredentialsSet

Синтаксис

CredentialsSet: ICredentialsSet;

CredentialsSet: Prognoz.Platform.Interop.Metabase.ICredentialsSet;

Описание

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

Комментарии

Коллекция CredentialsSet используется при работе с описанием репозитория. Учетные данные пользователей, хранящиеся в коллекции, могут использоваться при имперсонации пользователей. Все учетные данные, добавленные в коллекцию, шифруются и сохраняются в реестре операционной системы.

Пример

Добавьте ссылку на системную сборку Metabase.

Function SetCredentials(Definition: String; Realm: String; User: String; Password: String): Boolean;
Var
    MBMan: IMetabaseManager;
    MBDef: IMetabaseDefinition;
    Link: IMetabaseLink;
    ScPack: ISecurityPackage;
    DefCrsSet: ICredentialsSet;
    CrsRealm: ICredentialsRealm;
    Crs: IPasswordCredentials;
Begin
    MBMan := MetabaseManagerFactory.Active;
    MBDef := MBMan.Definitions.FindById(Definition);
    If MBDef = Null Then
        Return False;
    Else
        Link := MBDef As IMetabaseLink;
    End If;
    If Realm.IsEmpty Then
        Crs := Link.Credentials As IPasswordCredentials;
        Crs.UserName := User;
        Crs.Password := Password;
    Else
        ScPack := MBMan.Packs.FindById(MbDef.SecurityPackage).Package;
        Crs := ScPack.CreateCredentials(AuthenticationMode.Password) As IPasswordCredentials;
        //Новые учетные данные
        Crs.UserName := User;
        Crs.Password := Password;
        //Коллекция учетных данных описания
        DefCrsSet := Link.CredentialsSet;
        //Поиск записи по области действия
        //Если запись найдена, то обновляем учетные данные
        //Иначе создаем новую запись
        CrsRealm := DefCrsSet.Find(Realm);
        If CrsRealm = Null Then
            CrsRealm := DefCrsSet.Add(Realm);
            CrsRealm.Credentials := Crs;
        Else
            CrsRealm.Credentials := Crs;
        End If;
    End If;
    Mbdef.Save;
    Return True;
End Function SetCredentials;

Function SetCredentials(Definition: String; Realm: String; User: String; Password: String): Boolean;
Var
    Man: MetabaseManagerFactory = New MetabaseManagerFactoryClass();
    MBMan: IMetabaseManager;
    MBDef: IMetabaseDefinition;
    Link: IMetabaseLink;
    ScPack: ISecurityPackage;
    DefCrsSet: ICredentialsSet;
    CrsRealm: ICredentialsRealm;
    Crs: IPasswordCredentials;
Begin
    MBMan := Man.Active;
    MBDef := MBMan.Definitions.FindById(Definition);
    If MBDef = Null Then
        Return False;
    Else
        Link := MBDef As IMetabaseLink;
    End If;
    If String.IsNullOrEmpty(Realm) Then
        Crs := Link.Credentials As IPasswordCredentials;
        Crs.UserName := User;
        Crs.Password := Password;
    Else
        ScPack := MBMan.Packs.FindById(MbDef.SecurityPackage).Package;
        Crs := ScPack.CreateCredentials(AuthenticationMode.amPassword) As IPasswordCredentials;
        //Новые учетные данные
        Crs.UserName := User;
        Crs.Password := Password;
        //Коллекция учетных данных описания
        DefCrsSet := Link.CredentialsSet;
        //Поиск записи по области действия
        //Если запись найдена, то обновляем учетные данные
        //Иначе создаем новую запись
        CrsRealm := DefCrsSet.Find(Realm);
        If CrsRealm = Null Then
            CrsRealm := DefCrsSet.Add(Realm);
            CrsRealm.Credentials := Crs;
        Else
            CrsRealm.Credentials := Crs;
        End If;
    End If;
    Mbdef.Save();
    Return True;
End Function;

Указанная функция может применяться для обновления учетных данных, сохраненных вместе с описанием репозитория, либо для дополнения коллекции учетных данных новыми записями. При выполнении функции осуществляется поиск описания репозитория, передаваемого в параметре Definition. Если описание отсутствует, то функция вернет значение False. Если область действия не указана, то будут обновлены учетные данные для описания по умолчанию. При указании области действия в коллекции будет создана новая запись, либо обновлена существующая.

См. также:

IMetabaseLink