argos/dmp-frontend/src/app/core/model/configuration-models/auth-providers.model.ts

66 lines
1.7 KiB
TypeScript

export class AuthProviders {
private _authProviders: AuthProvider[];
get authProviders(): AuthProvider[] {
return this._authProviders;
}
private _defaultAuthProvider: AuthProvider;
get defaultAuthProvider(): AuthProvider {
return this._defaultAuthProvider;
}
public static parseValue(value: any): AuthProviders {
const authProvidersObj: AuthProviders = new AuthProviders();
authProvidersObj._defaultAuthProvider = AuthProvider.parseValue(value.defaultAuthProvider);
authProvidersObj._authProviders = [];
for (let authProviderValue of value.authProviders) {
const authProviderObj: AuthProvider = AuthProvider.parseValue(authProviderValue);
authProvidersObj._authProviders.push(authProviderObj);
}
return authProvidersObj;
}
public findOrGetDefault(providerName: string, culture: string): AuthProvider {
const authProvider = this.find(providerName, culture);
if (authProvider === null) return this.defaultAuthProvider;
return authProvider;
}
public find(providerName: string, culture: string): AuthProvider | undefined {
return this.authProviders.find(p => p.name === providerName && p.cultures.includes(culture));
}
}
export class AuthProvider {
private _name: string;
get name(): string {
return this._name;
}
private _providerClass: string;
get providerClass(): string {
return this._providerClass;
}
private _cultures: string[];
get cultures(): string[] {
return this._cultures;
}
public static parseValue(value: any): AuthProvider {
const obj: AuthProvider = new AuthProvider();
obj._name = value.name;
obj._providerClass = value.providerClass;
obj._cultures = value.cultures;
return obj;
}
}