fix(login/onboarding): redirect to dashboard if already logged in

This commit is contained in:
Nicolas Meienberger
2025-10-25 22:42:51 +02:00
parent a7bc1c2e7e
commit 37a22b260f
4 changed files with 20 additions and 6 deletions

View File

@@ -2,10 +2,12 @@ import { redirect, type MiddlewareFunction } from "react-router";
import { getMe, getStatus } from "~/api-client";
import { appContext } from "~/context";
export const authMiddleware: MiddlewareFunction = async ({ context }) => {
export const authMiddleware: MiddlewareFunction = async ({ context, request }) => {
const session = await getMe();
if (!session.data?.user.id) {
const isAuthRoute = ["/login", "/onboarding"].includes(new URL(request.url).pathname);
if (!session.data?.user.id && !isAuthRoute) {
const status = await getStatus();
if (!status.data?.hasUsers) {
throw redirect("/onboarding");
@@ -14,5 +16,11 @@ export const authMiddleware: MiddlewareFunction = async ({ context }) => {
throw redirect("/login");
}
context.set(appContext, { user: session.data.user, hasUsers: true });
if (session.data?.user.id) {
context.set(appContext, { user: session.data.user, hasUsers: true });
if (isAuthRoute) {
throw redirect("/");
}
}
};