Add Optional 2FA Support (#61)
* Add TOTP MFA Support * Add Passkey MFA Support It's not impossible I missed some minor cleanup, but most things make sense and there isn't a lot of obvious duplication anymore. --------- Co-authored-by: Bruno Bernardino <me@brunobernardino.com>
This commit is contained in:
28
lib/utils/multi-factor-auth.ts
Normal file
28
lib/utils/multi-factor-auth.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
// This file contains some multi-factor authentication utilities that are isomorphic.
|
||||
|
||||
import { MultiFactorAuthMethod, User } from '/lib/types.ts';
|
||||
|
||||
export function getMultiFactorAuthMethodsFromUser(
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user