fix: sync SessionProvider auth state to Zustand store for router guard
requireAuth() in routeTree.tsx reads isAuthenticated from useSessionStore (Zustand), but SessionProvider only managed state via React context. After login, the Zustand store stayed false, causing protected route guards to redirect to /login even when authenticated.
This commit is contained in:
parent
9932278b64
commit
aea74bda3b
@ -1,6 +1,6 @@
|
|||||||
import { type ReactNode, useCallback, useEffect, useState } from 'react'
|
import { type ReactNode, useCallback, useEffect, useState } from 'react'
|
||||||
import * as sessionApi from '@/entities/session'
|
import * as sessionApi from '@/entities/session'
|
||||||
import { SessionContext, type SessionContextValue } from '@/entities/session'
|
import { SessionContext, type SessionContextValue, useSessionStore } from '@/entities/session'
|
||||||
import {
|
import {
|
||||||
getAccessToken,
|
getAccessToken,
|
||||||
handleUnauthorized,
|
handleUnauthorized,
|
||||||
@ -18,11 +18,13 @@ export function SessionProvider({ children }: { children: ReactNode }) {
|
|||||||
const updateSession = useCallback((authData: { user: UserResponse; accessToken: string }) => {
|
const updateSession = useCallback((authData: { user: UserResponse; accessToken: string }) => {
|
||||||
setUser(authData.user)
|
setUser(authData.user)
|
||||||
setAccessTokenState(authData.accessToken)
|
setAccessTokenState(authData.accessToken)
|
||||||
|
useSessionStore.getState().setSession(authData)
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const clearSession = useCallback(() => {
|
const clearSession = useCallback(() => {
|
||||||
setUser(null)
|
setUser(null)
|
||||||
setAccessTokenState(null)
|
setAccessTokenState(null)
|
||||||
|
useSessionStore.getState().clearSession()
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const login = useCallback(
|
const login = useCallback(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user