[TIL] 팀 프로젝트

곽재훈·2024년 6월 19일
2



// 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}</>;
};
profile
개발하고 싶은 국문과 머시기

0개의 댓글

관련 채용 정보