fix(auth): enhance user login response handling and update User schema

- Log the response data on successful login for debugging purposes
- Improve error handling in user service by using safeParse for login response validation
- Update User schema to allow null values for optional fields, enhancing flexibility in user data handling
This commit is contained in:
AmirReza Jamali
2026-02-10 16:49:19 +03:30
parent cb6a48a6e6
commit 7755384d51
3 changed files with 21 additions and 16 deletions
+2 -1
View File
@@ -19,7 +19,8 @@ export const useLoginQuery = (callback?: () => void) => {
mutationFn: userService.login,
onSuccess: (response) => {
setAuthState(response.data);
router.replace("/charts");
console.log(response);
if (callback) {
callback();
}
+5 -1
View File
@@ -19,7 +19,11 @@ export const userService = {
try {
const response = await api.post(API_ENDPOINTS.USER.LOGIN, credentials);
return LoginResponseSchema.parse(response.data);
const result = LoginResponseSchema.safeParse(response.data);
if (!result.success) {
throw new Error(result.error.message);
}
return result.data;
} catch (error) {
console.error("ERROR caught in User Service Login:", error);
throw error;
+14 -14
View File
@@ -5,21 +5,21 @@ export const UserSchema = z.object({
id: z.string().regex(/^[0-9a-fA-F]{24}$/, {
message: "Invalid ObjectId",
}),
full_name: z.string(),
username: z.string().optional(),
email: z.string().email().optional(),
role: z.string().optional(),
status: z.string().optional(),
company_id: z.string().optional(),
department: z.string().optional(),
position: z.string().optional(),
phone: z.string().optional(),
full_name: z.string().optional().or(z.null()),
username: z.string().optional().or(z.null()),
email: z.string().email().optional().or(z.null()),
role: z.string().optional().or(z.null()),
status: z.string().optional().or(z.null()),
company_id: z.string().optional().or(z.null()),
department: z.string().optional().or(z.null()),
position: z.string().optional().or(z.null()),
phone: z.string().optional().or(z.null()),
profile_image: z.string().or(z.null()).optional(),
is_verified: z.boolean().optional(),
last_login_at: z.number().or(z.null()).optional(),
created_at: z.number().optional(),
updated_at: z.number().optional(),
updated_by: z.string().optional(),
is_verified: z.boolean().optional().or(z.null()),
last_login_at: z.number().or(z.null()).optional().or(z.null()),
created_at: z.number().optional().or(z.null()),
updated_at: z.number().optional().or(z.null()),
updated_by: z.string().optional().or(z.null()),
});
export const CreateAdminSchema = z.object({