diff --git a/apps/web/app/auth/callback/error/page.tsx b/apps/web/app/auth/callback/error/page.tsx
index 18961fc29..779de670b 100644
--- a/apps/web/app/auth/callback/error/page.tsx
+++ b/apps/web/app/auth/callback/error/page.tsx
@@ -1,9 +1,12 @@
+import Link from 'next/link';
import { redirect } from 'next/navigation';
import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert';
import { Button } from '@kit/ui/button';
import { Trans } from '@kit/ui/trans';
+import pathsConfig from '~/config/paths.config';
+
interface Params {
searchParams: {
error: string;
@@ -15,7 +18,7 @@ function AuthCallbackErrorPage({ searchParams }: Params) {
// if there is no error, redirect the user to the sign-in page
if (!error) {
- redirect('/auth/sign-in');
+ redirect(pathsConfig.auth.signIn);
}
return (
@@ -32,15 +35,11 @@ function AuthCallbackErrorPage({ searchParams }: Params) {
-
-
-
+
);
}
diff --git a/apps/web/app/auth/sign-up/page.tsx b/apps/web/app/auth/sign-up/page.tsx
index 8c5792a15..e42570e14 100644
--- a/apps/web/app/auth/sign-up/page.tsx
+++ b/apps/web/app/auth/sign-up/page.tsx
@@ -37,6 +37,7 @@ function SignUpPage({ searchParams }: Props) {
providers={authConfig.providers}
paths={{
callback: pathsConfig.auth.callback,
+ appHome: pathsConfig.app.home,
}}
inviteToken={inviteToken}
/>
diff --git a/apps/web/app/auth/verify/page.tsx b/apps/web/app/auth/verify/page.tsx
index bf5c1e308..40424969d 100644
--- a/apps/web/app/auth/verify/page.tsx
+++ b/apps/web/app/auth/verify/page.tsx
@@ -8,6 +8,12 @@ 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();
@@ -16,7 +22,7 @@ export const generateMetadata = async () => {
};
};
-async function VerifyPage() {
+async function VerifyPage(props: Props) {
const client = getSupabaseServerComponentClient();
const needsMfa = await checkRequiresMultiFactorAuthentication(client);
@@ -24,10 +30,12 @@ async function VerifyPage() {
redirect(pathsConfig.auth.signIn);
}
+ const redirectPath = props.searchParams.next ?? pathsConfig.app.home;
+
return (
{
- console.log('2');
+ paths={{
+ redirectPath,
}}
/>
);
diff --git a/packages/features/auth/src/components/multi-factor-challenge-container.tsx b/packages/features/auth/src/components/multi-factor-challenge-container.tsx
index beb02dfbc..cffcfbf17 100644
--- a/packages/features/auth/src/components/multi-factor-challenge-container.tsx
+++ b/packages/features/auth/src/components/multi-factor-challenge-container.tsx
@@ -3,6 +3,8 @@
import type { FormEventHandler } from 'react';
import { useCallback, useEffect, useState } from 'react';
+import { useRouter } from 'next/navigation';
+
import { useMutation } from '@tanstack/react-query';
import useFetchAuthFactors from '@kit/supabase/hooks/use-fetch-mfa-factors';
@@ -17,14 +19,22 @@ import Spinner from '@kit/ui/spinner';
import { Trans } from '@kit/ui/trans';
export function MultiFactorChallengeContainer({
- onSuccess,
+ paths,
}: React.PropsWithChildren<{
- onSuccess: () => void;
+ paths: {
+ redirectPath: string;
+ };
}>) {
+ const router = useRouter();
+
const [factorId, setFactorId] = useState('');
const [verifyCode, setVerifyCode] = useState('');
const verifyMFAChallenge = useVerifyMFAChallenge();
+ const onSuccess = useCallback(() => {
+ router.replace(paths.redirectPath);
+ }, [router, paths.redirectPath]);
+
const onSubmitClicked: FormEventHandler = useCallback(
(event) => {
void (async () => {
diff --git a/packages/features/auth/src/components/sign-up-methods-container.tsx b/packages/features/auth/src/components/sign-up-methods-container.tsx
index 0908ed3f7..312bc2836 100644
--- a/packages/features/auth/src/components/sign-up-methods-container.tsx
+++ b/packages/features/auth/src/components/sign-up-methods-container.tsx
@@ -2,8 +2,7 @@
import type { Provider } from '@supabase/supabase-js';
-import { isBrowser } from '@supabase/ssr';
-
+import { isBrowser } from '@kit/shared/utils';
import { Divider } from '@kit/ui/divider';
import { If } from '@kit/ui/if';