Skip to content

Commit aec3544

Browse files
Improve add-admin validation and surface API validation errors
1 parent 1a356a6 commit aec3544

2 files changed

Lines changed: 29 additions & 2 deletions

File tree

frontend/src/api/rakshaRideApi.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@ async function request(url, options = {}) {
1919
: { message: await res.text() };
2020

2121
if (!res.ok) {
22+
if (Array.isArray(data.errors) && data.errors.length > 0) {
23+
const formattedValidationErrors = data.errors
24+
.map((validationError) => validationError?.msg)
25+
.filter(Boolean)
26+
.join(' | ');
27+
28+
throw new Error(formattedValidationErrors || data.message || 'Request validation failed.');
29+
}
30+
2231
throw new Error(data.errorDetails || data.error || data.message || 'Request failed');
2332
}
2433

frontend/src/pages/Admin.jsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,32 @@ export default function Admin({ adminAccessToken, adminProfile, onAdminLogout })
171171
};
172172

173173
const handleCreateAdmin = async () => {
174-
if (!newAdmin.fullName.trim() || !newAdmin.emailAddress.trim() || !newAdmin.password.trim()) {
174+
const normalisedFullName = String(newAdmin.fullName || '').trim();
175+
const normalisedEmailAddress = String(newAdmin.emailAddress || '').trim().toLowerCase();
176+
const normalisedPassword = String(newAdmin.password || '').trim();
177+
178+
if (!normalisedFullName || !normalisedEmailAddress || !normalisedPassword) {
175179
showToast('Please fill full name, email address, and password for new admin.');
176180
return;
177181
}
178182

183+
if (!/^\S+@\S+\.\S+$/.test(normalisedEmailAddress)) {
184+
showToast('Please enter a valid email address for new admin.');
185+
return;
186+
}
187+
188+
if (normalisedPassword.length < 6) {
189+
showToast('Admin password must be at least 6 characters long.');
190+
return;
191+
}
192+
179193
setCreatingAdmin(true);
180194
try {
181-
await addAdminUser(newAdmin, adminAccessToken);
195+
await addAdminUser({
196+
fullName: normalisedFullName,
197+
emailAddress: normalisedEmailAddress,
198+
password: normalisedPassword,
199+
}, adminAccessToken);
182200
showToast('New admin created successfully.');
183201
setNewAdmin({ fullName: '', emailAddress: '', password: '' });
184202
const adminList = await listAdminUsers(adminAccessToken);

0 commit comments

Comments
 (0)