© 2026 Hedgehog Software, LLC
export const auth = betterAuth({ basePath: "/auth", database: drizzleAdapter(db, { provider: "pg", usePlural: true, }), trustedOrigins: [...], plugins: [... reactStartCookies(), ], });
const signInMutation = useMutation({ mutationFn: async (data: z.infer<typeof signInSchema>) => { return await auth.signIn.email({ email: data.email, password: data.password, }); }, onSuccess: (data) => { toast.success("Signed in successfully"); // biome-ignore lint/style/noNonNullAssertion: <explanation> localStorage.setItem("auth-token", data.data?.token!); navigate({ to: "/app" }); }, onError: (error) => { toast.error(error.message || "Failed to sign in. Please try again."); }, });
export const Route = createFileRoute("/app")({ beforeLoad: async ({ context }) => { const { data, error } = await context.auth.getSession(); console.log("data", data); if ( error || data === null || data?.session === null || data?.user === null ) { throw redirect({ to: "/auth/sign-in" }); } return { user: data.user, session: data.session, }; }, component: RouteComponent, });
better-auth.session_token
getSession