fix(auth): fix fetch user info at login

This commit is contained in:
shafin-r
2025-10-07 13:50:29 +06:00
parent e1a33d1398
commit d1947e8e6e
3 changed files with 26 additions and 27 deletions

View File

@ -46,7 +46,6 @@ interface AuthState {
login: (form: LoginForm) => Promise<void>;
register: (form: RegisterForm) => Promise<void>;
setToken: (token: string | null) => void;
fetchUser: () => Promise<void>;
logout: () => void;
initializeAuth: () => Promise<void>;
}
@ -78,9 +77,23 @@ export const useAuthStore = create<AuthState>((set, get) => ({
throw new Error(data.message || "Login failed");
}
setCookie("authToken", data.token);
set({ token: data.token, isLoading: false });
const token = data.token;
setCookie("authToken", token);
set({ token });
// Automatically fetch user info after login
const userRes = await fetch(`${API_URL}/me/profile/`, {
headers: { Authorization: `Bearer ${token}` },
});
if (!userRes.ok) {
throw new Error("Failed to fetch user info after login");
}
const userData: UserData = await userRes.json();
set({ user: userData, isLoading: false });
} catch (err: any) {
console.error("Login error:", err);
set({
error: err?.message || "Login failed",
isLoading: false,
@ -88,6 +101,7 @@ export const useAuthStore = create<AuthState>((set, get) => ({
throw err;
}
},
register: async (form: RegisterForm) => {
set({ isLoading: true, error: null });
try {
@ -118,26 +132,6 @@ export const useAuthStore = create<AuthState>((set, get) => ({
}
},
fetchUser: async () => {
const token = get().token;
if (!token) return;
try {
const res = await fetch(`${API_URL}/me/profile/`, {
headers: { Authorization: `Bearer ${token}` },
});
if (!res.ok) throw new Error("Failed to fetch user info");
const data: UserData = await res.json();
console.log(data);
set({ user: data });
} catch (err) {
console.error("Error fetching user:", err);
get().logout();
}
},
logout: () => {
set({ token: null, user: null });
setCookie("authToken", null);
@ -147,7 +141,6 @@ export const useAuthStore = create<AuthState>((set, get) => ({
const storedToken = getCookie("authToken");
if (storedToken) {
set({ token: storedToken });
await get().fetchUser();
}
set({ isLoading: false, hydrated: true });
},