- 로그인 실연동: 성공 시 access/refresh 토큰 저장, me 캐시 무효화 - SidebarFooter: useMeQuery 로 공급사명 표시, useLogoutMutation 로 로그아웃 - RequireAuth 가드로 /list·/chat 보호, 토큰 없으면 로그인으로 - 인증 만료/폐기 시 로그인 페이지로 이동(setUnauthorizedHandler) - LoginPage: 이미 로그인 상태면 목록으로 리다이렉트 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
823 B
TypeScript
38 lines
823 B
TypeScript
import { createBrowserRouter, RouterProvider } from 'react-router'
|
|
import { setUnauthorizedHandler } from '@/apis'
|
|
import { RequireAuth } from '@/features/auth'
|
|
import LoginPage from '@/pages/LoginPage'
|
|
import ListPage from '@/pages/ListPage'
|
|
import ChatPage from '@/pages/ChatPage'
|
|
|
|
const router = createBrowserRouter([
|
|
{ path: '/', element: <LoginPage /> },
|
|
{
|
|
path: '/list',
|
|
element: (
|
|
<RequireAuth>
|
|
<ListPage />
|
|
</RequireAuth>
|
|
),
|
|
},
|
|
{
|
|
path: '/chat',
|
|
element: (
|
|
<RequireAuth>
|
|
<ChatPage />
|
|
</RequireAuth>
|
|
),
|
|
},
|
|
])
|
|
|
|
// 토큰 만료/폐기로 인증이 끊기면 로그인 페이지로 이동시킨다.
|
|
setUnauthorizedHandler(() => {
|
|
void router.navigate('/')
|
|
})
|
|
|
|
function App() {
|
|
return <RouterProvider router={router} />
|
|
}
|
|
|
|
export default App
|