2025-05-29 16:30:28 +00:00
|
|
|
// This file contains some multi-factor authentication utilities that are isomorphic.
|
|
|
|
|
|
2025-06-11 14:53:39 +00:00
|
|
|
import { MultiFactorAuthMethod, MultiFactorAuthMethodType, User } from '/lib/types.ts';
|
2025-05-29 16:30:28 +00:00
|
|
|
|
2025-06-11 14:53:39 +00:00
|
|
|
function getMultiFactorAuthMethodsFromUser(
|
2025-05-29 16:30:28 +00:00
|
|
|
user: { extra: Pick<User['extra'], 'multi_factor_auth_methods'> },
|
|
|
|
|
): MultiFactorAuthMethod[] {
|
|
|
|
|
return user.extra.multi_factor_auth_methods || [];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getEnabledMultiFactorAuthMethodsFromUser(
|
|
|
|
|
user: { extra: Pick<User['extra'], 'multi_factor_auth_methods'> },
|
|
|
|
|
): MultiFactorAuthMethod[] {
|
|
|
|
|
return getMultiFactorAuthMethodsFromUser(user).filter((method) => method.enabled);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getMultiFactorAuthMethodByIdFromUser(
|
|
|
|
|
user: { extra: Pick<User['extra'], 'multi_factor_auth_methods'> },
|
|
|
|
|
id: string,
|
|
|
|
|
): MultiFactorAuthMethod | undefined {
|
|
|
|
|
return getMultiFactorAuthMethodsFromUser(user).find((method) => method.id === id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isMultiFactorAuthEnabledForUser(
|
|
|
|
|
user: { extra: Pick<User['extra'], 'multi_factor_auth_methods'> },
|
|
|
|
|
): boolean {
|
|
|
|
|
return getEnabledMultiFactorAuthMethodsFromUser(user).length > 0;
|
|
|
|
|
}
|