This commit refines the Multi-Factor Authentication (MFA) handling by removing 'requireUser' method, optimizing 'useFetchMfaFactors' hook to avoid fetching stale data, and improving error logging. The changes enhance the system's user session management and the MFA challenge response, ensuring smoother user experience and potential troubleshooting.
55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import { redirect } from 'next/navigation';
|
|
|
|
import { MultiFactorChallengeContainer } from '@kit/auth/mfa';
|
|
import { checkRequiresMultiFactorAuthentication } from '@kit/supabase/check-requires-mfa';
|
|
import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client';
|
|
|
|
import pathsConfig from '~/config/paths.config';
|
|
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
interface Props {
|
|
searchParams: {
|
|
next?: string;
|
|
};
|
|
}
|
|
|
|
export const generateMetadata = async () => {
|
|
const i18n = await createI18nServerInstance();
|
|
|
|
return {
|
|
title: i18n.t('auth:signIn'),
|
|
};
|
|
};
|
|
|
|
async function VerifyPage(props: Props) {
|
|
const client = getSupabaseServerComponentClient();
|
|
|
|
const {
|
|
data: { user },
|
|
} = await client.auth.getUser();
|
|
|
|
if (!user) {
|
|
redirect(pathsConfig.auth.signIn);
|
|
}
|
|
|
|
const needsMfa = await checkRequiresMultiFactorAuthentication(client);
|
|
|
|
if (!needsMfa) {
|
|
redirect(pathsConfig.auth.signIn);
|
|
}
|
|
|
|
const redirectPath = props.searchParams.next ?? pathsConfig.app.home;
|
|
|
|
return (
|
|
<MultiFactorChallengeContainer
|
|
userId={user.id}
|
|
paths={{
|
|
redirectPath,
|
|
}}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export default withI18n(VerifyPage);
|