2. 로그인, 사용자 목록
1. 로그인
🎯 관리자 사이트는 무조건 로그인 필수 일반 페이지와 로그인 페이지를 완전히 분리하기
routes.tsx 생성
routes.tsx 생성const routes = [
{ path: '/login', element: <LoginPage /> },
{
element: <Layout />,
children: [
{ path: '/', element: <HomePage /> },
{ path: '/users', element: <UserListPage /> },
{ path: '/categories', element: <CategoryListPage /> },
{ path: '/categories/new', element: <CategoryNewPage /> },
{ path: '/categories/:id/edit', element: <CategoryEditPage /> },
{ path: '/products', element: <ProductListPage /> },
{ path: '/products/new', element: <ProductNewPage /> },
{ path: '/products/:id', element: <ProductDetailPage /> },
{ path: '/products/:id/edit', element: <ProductEditPage /> },
{ path: '/orders', element: <OrderListPage /> },
{ path: '/orders/:id', element: <OrderDetailPage /> },
{ path: '/orders/:id/edit', element: <OrderEditPage /> },
],
},
];LoginPage 구현
LoginPage 구현레이아웃이 적용되지 않아 스스로 꾸며줘야 한다는 점을 제외하면 기존과 동일
Layout 구현
Layout 구현로그인이 올바르게 된 경우에만 렌더링하도록 확실히 제약하기
useCheckAccessToken hook 생성
로그인 페이지로 리다이렉션하거나 ready라고 안내하기
헤더 구현하기
관리자로 로그인했거나 하지 않았거나 둘 중 하나일 수 밖에 없기 때문에 단순하게 구성할 수 있음
2. 사용자 관리
사용자 관리는 사실 대단히 복잡할 수 있다. 사용자와 관련된 정보가 많기 때문에 이를 모두 다루는 것 자체도 문제고, 고객 지원 업무에서도 사용자는 핵심 축이 되기 때문에 제대로 된 사용자 관리는 정말 복잡한 일이다. 하지만 여기서는 단순한 CRUD, 그것도 사용자 목록 정도만 확인하는 작업에 집중한다. SWR를 써서 단순 작업을 얼마나 간단히 처리할 수 있는지 확인해 보자.
사용자 목록
🎯 간단한 CRUD로 사용자 목록을 표시하가
💡 내용이 많아지면 컴포넌트로 분리할 것
useFetchUsers hook 생성
SWR을 바로 쓰지 않고 개별 자료형에 대응하기 위해 한번 감싸주는 형태로 구성
useFetch hook 생성
mutate는 바로 다음에 활용할 예정
ApiService에서 fetcher 제공
데이터를 변경하지만 않으면 이런 단순한 형태로 운영할 수 있음
Last updated