add: full auth functionality

add: zustand auth store
add: jwt auto refresh
This commit is contained in:
Mahyar Khanbolooki
2025-07-01 22:49:56 +03:30
parent ef63706116
commit 48c458f012
22 changed files with 340 additions and 53 deletions
@@ -6,7 +6,8 @@ type User = {
id: string
name: string
number: string
token: string
accessToken: string
refreshToken: string
}
type AuthStore = {
@@ -14,6 +15,8 @@ type AuthStore = {
isAuthenticated: boolean
login: (userData: User) => void
logout: () => void
update: (userData: User) => void
setToken: (token: string | null) => void;
}
export const useAuthStore = create<AuthStore>()(
@@ -25,12 +28,35 @@ export const useAuthStore = create<AuthStore>()(
set(() => ({
user: userData,
isAuthenticated: true,
})),
}))
,
logout: () =>
set(() => ({
user: null,
isAuthenticated: false,
})),
update: (userData) => {
set((state) => {
if (!state.user) return state; // no user to update
return {
user: {
...state.user,
...userData
},
};
});
},
setToken: (token) => {
set((state) => {
if (!state.user) return state; // no user to update
return {
user: {
...state.user,
accessToken: token ?? '',
},
};
});
}
}),
{
name: 'auth-storage', // Key in localStorage