Skip to content

Commit 21dd75e

Browse files
Merge pull request #3983 from OneCommunityGlobal/venkataramanan_fix_user_validation_errors_in_user_management
Venkataramanan. Update user field validation while create new user in User Management…
2 parents 7d5605a + 5295b05 commit 21dd75e

File tree

1 file changed

+56
-67
lines changed

1 file changed

+56
-67
lines changed

src/components/UserProfile/AddNewUserProfile/UserProfileAdd.jsx

Lines changed: 56 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class UserProfileAdd extends Component {
219219
value={lastName}
220220
onChange={(e) => this.handleUserProfile(e)}
221221
placeholder="Last Name"
222-
invalid={!!(this.state.formSubmitted && this.state.formErrors.lastName)}
222+
invalid={this.state.formSubmitted && (!!this.state.formErrors.lastName || lastName.length < 2)}
223223
className={darkMode ? 'bg-darkmode-liblack text-light border-0' : ''}
224224
/>
225225
{this.state.formSubmitted && this.state.formErrors.lastName && (
@@ -747,6 +747,9 @@ class UserProfileAdd extends Component {
747747
return false;
748748
} else if (firstLength && lastLength && phone.length >= 9) {
749749
return true;
750+
} else if (this.state.userProfile.lastName.length < 2) {
751+
toast.error('Last Name must be at least 2 characters long');
752+
return false;
750753
} else {
751754
toast.error('Please fill all the required fields');
752755
return false;
@@ -894,62 +897,46 @@ class UserProfileAdd extends Component {
894897
this.props.userCreated();
895898
})
896899
.catch(err => {
897-
if (err.response?.data?.type) {
898-
switch (err.response.data.type) {
900+
const res = err.response;
901+
const status = res?.status;
902+
const data = res?.data || {};
903+
904+
if (!res) {
905+
toast.error(`Network error: ${err.message}`);
906+
return;
907+
}
908+
909+
// Handle Mongoose validation error cleanup
910+
if (data?.errors && typeof data.errors === 'object') {
911+
const firstErrorKey = Object.keys(data.errors)[0];
912+
const firstError = data.errors[firstErrorKey];
913+
const fieldName = firstError.path || firstErrorKey;
914+
const message = firstError.message;
915+
916+
toast.error(`${fieldName.charAt(0).toUpperCase() + fieldName.slice(1)}: ${message}`);
917+
return;
918+
}
919+
920+
// Fallback to known type-based errors
921+
if (data.type) {
922+
switch (data.type) {
899923
case 'email':
900-
this.setState({
901-
formValid: {
902-
...that.state.formValid,
903-
email: false,
904-
},
905-
formErrors: {
906-
...that.state.formErrors,
907-
email: 'Email already exists',
908-
},
909-
});
910-
break;
924+
toast.error('Email already exists');
925+
return;
911926
case 'phoneNumber':
912-
this.setState({
913-
formValid: {
914-
...that.state.formValid,
915-
phoneNumber: false,
916-
showphone: false,
917-
},
918-
formErrors: {
919-
...that.state.formErrors,
920-
phoneNumber: 'Phone number already exists',
921-
},
922-
});
923-
break;
927+
toast.error('Phone number already exists');
928+
return;
924929
case 'name':
925-
if (
926-
this.checkIfDuplicate(userData.firstName, userData.lastName) &&
927-
!allowsDuplicateName
928-
) {
929-
this.setState({
930-
popupOpen: true,
931-
});
932-
}
933-
break;
930+
toast.error('A user with this first and last name already exists');
931+
return;
934932
case 'credentials':
935-
this.setState({
936-
formValid: {
937-
...that.state.formValid,
938-
email: false,
939-
},
940-
formErrors: {
941-
...that.state.formErrors,
942-
actualEmail: 'Actual email or password may be incorrect',
943-
actualPassword: 'Actual email or password may be incorrect',
944-
},
945-
});
946-
break;
933+
toast.error('Admin credentials were not accepted');
934+
return;
947935
}
948936
}
949-
toast.error(
950-
err.response?.data?.error ||
951-
'An unknown error occurred while attempting to create this user.',
952-
);
937+
938+
// Generic fallback
939+
toast.error(`Create failed${status ? ` (${status})` : ''}: ${data.error || 'Unknown error occurred.'}`);
953940
});
954941
}
955942
}
@@ -1059,22 +1046,24 @@ class UserProfileAdd extends Component {
10591046
},
10601047
});
10611048
break;
1062-
case 'lastName':
1063-
this.setState({
1064-
userProfile: {
1065-
...userProfile,
1066-
[event.target.id]: event.target.value,
1067-
},
1068-
formValid: {
1069-
...formValid,
1070-
[event.target.id]: event.target.value.length > 0,
1071-
},
1072-
formErrors: {
1073-
...formErrors,
1074-
lastName: event.target.value.length > 0 ? '' : 'Last Name required',
1075-
},
1076-
});
1077-
break;
1049+
case 'lastName':
1050+
this.setState({
1051+
userProfile: {
1052+
...userProfile,
1053+
[event.target.id]: event.target.value,
1054+
},
1055+
formValid: {
1056+
...formValid,
1057+
[event.target.id]: event.target.value.length >= 2,
1058+
},
1059+
formErrors: {
1060+
...formErrors,
1061+
lastName: event.target.value.length >= 2
1062+
? ''
1063+
: 'Last Name cannot be less than 2 characters long',
1064+
},
1065+
});
1066+
break;
10781067
case 'email':
10791068
this.setState({
10801069
userProfile: {

0 commit comments

Comments
 (0)