diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts new file mode 100644 index 0000000..e2171f8 --- /dev/null +++ b/src/modules/auth/auth.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@nestjs/common'; +import { AuthConfigService } from './auth.config'; +import { AuthResult, LoginData } from './auth.types'; +import { LdapAuthProvider } from './providers/ldap-auth.provider'; +import { MicrosoftOAuthProvider } from './providers/microsoft-oauth.provider'; + +@Injectable() +export class AuthService { + constructor( + private readonly authConfig: AuthConfigService, + private readonly ldapAuthProvider: LdapAuthProvider, + private readonly microsoftOAuthProvider: MicrosoftOAuthProvider, + ) {} + + getPublicConfig() { + return this.authConfig.getPublicConfig(); + } + + loginWithLdap(loginData: LoginData): Promise { + return this.ldapAuthProvider.authenticate(loginData); + } + + getMicrosoftAuthorizeUrl() { + return this.microsoftOAuthProvider.getAuthorizeUrl(); + } + + loginWithMicrosoftCallback(query: { code?: string; state?: string }) { + return this.microsoftOAuthProvider.authenticateCallback(query); + } + + getMicrosoftSuccessRedirectUrl() { + const config = this.authConfig.getConfig(); + + return config.microsoft.successRedirectUrl || `${config.frontendUrl}/login`; + } +}