import config from '@/config'; import { SettingsRepository } from '@db/repositories/settings.repository'; import type { AuthProviderType } from '@db/entities/AuthIdentity'; import Container from 'typedi'; /** * Only one authentication method can be active at a time. This function sets the current authentication method * and saves it to the database. * SSO methods should only switch to email and then to another method. Email can switch to any method. * @param authenticationMethod */ export async function setCurrentAuthenticationMethod( authenticationMethod: AuthProviderType, ): Promise { config.set('userManagement.authenticationMethod', authenticationMethod); await Container.get(SettingsRepository).save( { key: 'userManagement.authenticationMethod', value: authenticationMethod, loadOnStartup: true, }, { transaction: false }, ); } export function getCurrentAuthenticationMethod(): AuthProviderType { return config.getEnv('userManagement.authenticationMethod'); } export function isSamlCurrentAuthenticationMethod(): boolean { return getCurrentAuthenticationMethod() === 'saml'; } export function isLdapCurrentAuthenticationMethod(): boolean { return getCurrentAuthenticationMethod() === 'ldap'; } export function isEmailCurrentAuthenticationMethod(): boolean { return getCurrentAuthenticationMethod() === 'email'; } export function isSsoJustInTimeProvisioningEnabled(): boolean { return config.getEnv('sso.justInTimeProvisioning'); } export function doRedirectUsersFromLoginToSsoFlow(): boolean { return config.getEnv('sso.redirectLoginToSso'); }