merge: bring in session-loop and dashboard fixes from main
This commit is contained in:
@@ -48,10 +48,12 @@ api.interceptors.request.use((config) => {
|
||||
// Response interceptor to handle errors
|
||||
api.interceptors.response.use(
|
||||
(response: AxiosResponse) => response,
|
||||
(error) => {
|
||||
async (error) => {
|
||||
if (error.response?.status === 401) {
|
||||
// Clear token and redirect to login
|
||||
const { useAuthStore } = await import('./store');
|
||||
useAuthStore.getState().logout();
|
||||
localStorage.removeItem('auth_token');
|
||||
localStorage.removeItem('user');
|
||||
window.location.href = '/login';
|
||||
}
|
||||
return Promise.reject(error);
|
||||
|
||||
@@ -16,7 +16,11 @@ export const useAuthStore = create<AuthState>()(
|
||||
token: null,
|
||||
isAuthenticated: false,
|
||||
setToken: (token) => set({ token, isAuthenticated: true }),
|
||||
logout: () => set({ token: null, isAuthenticated: false }),
|
||||
logout: () => {
|
||||
localStorage.removeItem('auth_token');
|
||||
localStorage.removeItem('user');
|
||||
set({ token: null, isAuthenticated: false });
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: 'auth-storage',
|
||||
|
||||
Reference in New Issue
Block a user