directus

Форк
0
/
get-auth-providers.ts 
39 строк · 1.1 Кб
1
import { useEnv } from '@directus/env';
2
import { toArray } from '@directus/utils';
3

4
interface AuthProvider {
5
	name: string;
6
	driver: string;
7
	icon?: string;
8
	label?: string;
9
}
10

11
export function getAuthProviders({ sessionOnly } = { sessionOnly: false }): AuthProvider[] {
12
	const env = useEnv();
13

14
	let providers = toArray(env['AUTH_PROVIDERS'] as string).filter(
15
		(provider) => provider && env[`AUTH_${provider.toUpperCase()}_DRIVER`],
16
	);
17

18
	if (sessionOnly) {
19
		providers = providers.filter((provider) => {
20
			const driver = env[`AUTH_${provider.toUpperCase()}_DRIVER`] as string;
21

22
			// only the following 3 drivers require a mode selection
23
			if (['oauth2', 'openid', 'saml'].includes(driver)) {
24
				const mode = env[`AUTH_${provider.toUpperCase()}_MODE`] as string | undefined;
25
				// if mode is not defined it defaults to session
26
				return !mode || mode === 'session';
27
			}
28

29
			return true;
30
		});
31
	}
32

33
	return providers.map((provider) => ({
34
		name: provider,
35
		label: env[`AUTH_${provider.toUpperCase()}_LABEL`] as string,
36
		driver: env[`AUTH_${provider.toUpperCase()}_DRIVER`] as string,
37
		icon: env[`AUTH_${provider.toUpperCase()}_ICON`] as string,
38
	}));
39
}
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.