// api.auth.js
export const getSessionWithSupabase = async () => {
const { data: user } = await supabase.auth.getSession();
return user;
};
// router.jsx
{
path: '/',
element: (
<PublicRoute>
<Layout />
</PublicRoute>
),
children: [
{
path: 'sign-up',
element: <SignUp />
},
{
path: 'log-in',
element: <LogIn />
}
],
loader: getSessionWithSupabase
},
// PublicRoute.jsx
import { Navigate, useLoaderData } from 'react-router-dom';
export const PublicRoute = ({ children }) => {
const { session } = useLoaderData();
const isSession = !!session;
if (isSession) return <Navigate to="/" />;
return <>{children}</>;
};
// PrivateRoute.jsx
import { Navigate, useLoaderData } from 'react-router-dom';
export const PrivateRoute = ({ children }) => {
const { session } = useLoaderData();
const isSession = !!session;
if (!isSession) return <Navigate to="/log-in" />;
return <>{children}</>;
};