From a6e62a70f090124e72849e07d3fd3cc38b57785f Mon Sep 17 00:00:00 2001 From: Suriya Date: Wed, 8 Jul 2026 17:20:25 +0530 Subject: [PATCH] fix: tolerate flat (non-nested) success response shape from /admin/login The live backend returns success:true + token but doesn't nest user fields under a data object the way the spec described, causing 'Cannot read properties of undefined (reading email)'. Falls back to reading fields off data.data, data.user, or the top-level response. --- src/pages/nearle/login.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/pages/nearle/login.js b/src/pages/nearle/login.js index 4be1b91..b459949 100644 --- a/src/pages/nearle/login.js +++ b/src/pages/nearle/login.js @@ -53,11 +53,15 @@ const Login = () => { if (res.data.success) { OpenToast('Login Successful', 'success', 1000); - const { token, data } = res.data; + // The live backend's success response doesn't nest user fields under + // `data` the way the original spec described — fall back to reading + // them off the top-level response if `data` isn't there. + const token = res.data.token; + const data = res.data.data || res.data.user || res.data; dispatch(setLoginUser(data)); - localStorage.setItem('authname', data.email || data.firstname); - localStorage.setItem('userid', data.userid); - localStorage.setItem('roleid', data.roleid); + localStorage.setItem('authname', data.email || data.firstname || username); + localStorage.setItem('userid', data.userid ?? data.id ?? ''); + localStorage.setItem('roleid', data.roleid ?? data.role ?? ''); localStorage.setItem('token', token); axios.defaults.headers.common.Authorization = `Bearer ${token}`; markSessionStart();