mirror of
https://github.com/FranP-code/Reflecto.git
synced 2025-10-13 00:43:31 +00:00
feat: implement auth redirects using beforeLoad route handlers
This commit is contained in:
@@ -1,29 +1,28 @@
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { useEffect } from "react";
|
||||
import { createFileRoute, redirect } from "@tanstack/react-router";
|
||||
import { SpacesGrid } from "@/components/spaces-grid";
|
||||
import { authClient } from "@/lib/auth-client";
|
||||
import { authClient, account } from "@/lib/auth-client";
|
||||
import { trpc } from "@/utils/trpc";
|
||||
|
||||
export const Route = createFileRoute("/dashboard")({
|
||||
beforeLoad: async () => {
|
||||
const me = await account.get();
|
||||
if (!me) {
|
||||
throw redirect({ to: "/" });
|
||||
}
|
||||
const isVerified = Boolean(me.emailVerification);
|
||||
if (!isVerified) {
|
||||
throw redirect({ to: "/verify-email" });
|
||||
}
|
||||
},
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
const { data: session, isPending } = authClient.useSession();
|
||||
|
||||
const navigate = Route.useNavigate();
|
||||
|
||||
const privateData = useQuery(trpc.privateData.queryOptions());
|
||||
|
||||
useEffect(() => {
|
||||
if (!(session || isPending)) {
|
||||
navigate({
|
||||
to: "/login",
|
||||
});
|
||||
}
|
||||
}, [session, isPending, navigate]);
|
||||
|
||||
if (isPending) {
|
||||
return <div>Loading...</div>;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,26 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import { createFileRoute, redirect } from "@tanstack/react-router";
|
||||
import { useState } from "react";
|
||||
import SignInForm from "@/components/sign-in-form";
|
||||
import SignUpForm from "@/components/sign-up-form";
|
||||
import { account } from "@/lib/auth-client";
|
||||
|
||||
export const Route = createFileRoute("/login")({
|
||||
beforeLoad: async () => {
|
||||
let me = null;
|
||||
try {
|
||||
me = await account.get();
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
console.log(me)
|
||||
if (me) {
|
||||
const isVerified = Boolean(me.emailVerification);
|
||||
if (isVerified) {
|
||||
throw redirect({ to: "/dashboard" });
|
||||
}
|
||||
throw redirect({ to: "/verify-email" });
|
||||
}
|
||||
},
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user