66 lines
1.7 KiB
TypeScript
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;
|
||
|
}
|
||
|
}
|