fix: persistance du login admin via localStorage (zustand persist)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { create } from 'zustand';
|
||||
import { persist } from 'zustand/middleware';
|
||||
import { apiGet } from '@/api/client';
|
||||
import { ENDPOINTS } from '@/utils/constants';
|
||||
|
||||
@@ -9,27 +10,35 @@ interface AuthStore {
|
||||
logout: () => void;
|
||||
}
|
||||
|
||||
export const useAuthStore = create<AuthStore>((set) => ({
|
||||
apiKey: null,
|
||||
isAuthenticated: false,
|
||||
export const useAuthStore = create<AuthStore>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
apiKey: null,
|
||||
isAuthenticated: false,
|
||||
|
||||
login: async (key: string) => {
|
||||
// Temporarily set the key so the apiGet will use it
|
||||
set({ apiKey: key });
|
||||
login: async (key: string) => {
|
||||
// Temporarily set the key so the apiGet will use it
|
||||
set({ apiKey: key });
|
||||
|
||||
try {
|
||||
// Validate by calling clients endpoint (requires admin scope)
|
||||
await apiGet(ENDPOINTS.CLIENTS);
|
||||
set({ isAuthenticated: true });
|
||||
return true;
|
||||
} catch {
|
||||
// Reset on failure
|
||||
set({ apiKey: null, isAuthenticated: false });
|
||||
return false;
|
||||
try {
|
||||
// Validate by calling clients endpoint (requires admin scope)
|
||||
await apiGet(ENDPOINTS.CLIENTS);
|
||||
set({ isAuthenticated: true });
|
||||
return true;
|
||||
} catch {
|
||||
// Reset on failure
|
||||
set({ apiKey: null, isAuthenticated: false });
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
logout: () => {
|
||||
set({ apiKey: null, isAuthenticated: false });
|
||||
},
|
||||
}),
|
||||
{
|
||||
name: 'imago-auth',
|
||||
partialize: (state) => ({ apiKey: state.apiKey, isAuthenticated: state.isAuthenticated }),
|
||||
}
|
||||
},
|
||||
|
||||
logout: () => {
|
||||
set({ apiKey: null, isAuthenticated: false });
|
||||
},
|
||||
}));
|
||||
)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user