feat: implement two-factor authentication flow during sign-in and add utility hooks for configuration management

This commit is contained in:
estifanos
2026-08-19 10:42:30 +00:00
parent 6117f9c862
commit ff89b9af5e
11 changed files with 170 additions and 38 deletions

View File

@@ -0,0 +1,21 @@
import { useApiMutation, useApiQuery } from "@ema-platform/api";
import { twoFactorRequest } from "./two-factor-request";
type AccountConfig = { id: string; isMFARequired: boolean };
/** Reads and writes the signed-in user's IAM two-step verification setting. */
export function useTwoFactor() {
const { data, refetch, isLoading } = useApiQuery<{ items: AccountConfig[] }>({
url: "/account-configurations/my-config",
});
const [save, { isLoading: isSaving }] = useApiMutation();
const config = data?.items?.[0];
const setEnabled = async (isMFARequired: boolean) => {
await save(twoFactorRequest(config, isMFARequired)).unwrap();
await refetch();
};
return { enabled: !!config?.isMFARequired, isLoading, isSaving, setEnabled };
}