29 lines
917 B
TypeScript
29 lines
917 B
TypeScript
/**
|
|
* Auth Strategy Factory
|
|
* Creates the appropriate authentication strategy based on provider type
|
|
*/
|
|
|
|
import type { AuthProvider } from '../../../models/auth.provider.ts';
|
|
import type { CryptoService } from '../../crypto.service.ts';
|
|
import type { IAuthStrategy } from './auth.strategy.interface.ts';
|
|
import { OAuthStrategy } from './oauth.strategy.ts';
|
|
import { LdapStrategy } from './ldap.strategy.ts';
|
|
|
|
export class AuthStrategyFactory {
|
|
constructor(private cryptoService: CryptoService) {}
|
|
|
|
/**
|
|
* Create the appropriate strategy for a provider
|
|
*/
|
|
public create(provider: AuthProvider): IAuthStrategy {
|
|
switch (provider.type) {
|
|
case 'oidc':
|
|
return new OAuthStrategy(provider, this.cryptoService);
|
|
case 'ldap':
|
|
return new LdapStrategy(provider, this.cryptoService);
|
|
default:
|
|
throw new Error(`Unsupported provider type: ${provider.type}`);
|
|
}
|
|
}
|
|
}
|