mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
fix(registration): Make Username optional (#831)
* fix(User.js): update validation schema for username field, allow empty string as a valid value fix(validators.js): update validation schema for username field, allow empty string as a valid value fix(Registration.tsx, validators.js): update validation rules for name and username fields, change minimum length to 2 and maximum length to 80, assure they match and allow empty string as a valid value fix(Eng.tsx): update localization string for com_auth_username, indicate that it is optional * fix(User.js): update regex pattern for username validation to allow special characters @#$%&*() fix(validators.js): update regex pattern for username validation to allow special characters @#$%&*() * fix(Registration.spec.tsx): fix validation error message for username length requirement
This commit is contained in:
parent
d38e463d34
commit
37347d4683
5 changed files with 15 additions and 16 deletions
|
|
@ -24,9 +24,7 @@ const userSchema = mongoose.Schema(
|
||||||
username: {
|
username: {
|
||||||
type: String,
|
type: String,
|
||||||
lowercase: true,
|
lowercase: true,
|
||||||
required: [true, 'can\'t be blank'],
|
default: '',
|
||||||
match: [/^[a-zA-Z0-9_.-]+$/, 'is invalid'],
|
|
||||||
index: true,
|
|
||||||
},
|
},
|
||||||
email: {
|
email: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|
@ -173,12 +171,13 @@ module.exports.validateUser = (user) => {
|
||||||
});
|
});
|
||||||
const schema = {
|
const schema = {
|
||||||
avatar: Joi.any(),
|
avatar: Joi.any(),
|
||||||
name: Joi.string().min(2).max(80).required(),
|
name: Joi.string().min(3).max(80).required(),
|
||||||
username: Joi.string()
|
username: Joi.string()
|
||||||
|
.trim()
|
||||||
|
.allow('')
|
||||||
.min(2)
|
.min(2)
|
||||||
.max(80)
|
.max(80)
|
||||||
.regex(/^[a-zA-Z0-9_.-]+$/)
|
.regex(/^[a-zA-Z0-9_.-@#$%&*() ]+$/),
|
||||||
.required(),
|
|
||||||
password: Joi.string().min(8).max(128).allow('').allow(null),
|
password: Joi.string().min(8).max(128).allow('').allow(null),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@ const loginSchema = Joi.object().keys({
|
||||||
});
|
});
|
||||||
|
|
||||||
const registerSchema = Joi.object().keys({
|
const registerSchema = Joi.object().keys({
|
||||||
name: Joi.string().trim().min(2).max(30).required(),
|
name: Joi.string().trim().min(3).max(80).required(),
|
||||||
username: Joi.string()
|
username: Joi.string()
|
||||||
.trim()
|
.trim()
|
||||||
|
.allow('')
|
||||||
.min(2)
|
.min(2)
|
||||||
.max(20)
|
.max(80)
|
||||||
.regex(/^[a-zA-Z0-9_.-]+$/)
|
.regex(/^[a-zA-Z0-9_.-@#$%&*() ]+$/),
|
||||||
.required(),
|
|
||||||
email: Joi.string().trim().email().required(),
|
email: Joi.string().trim().email().required(),
|
||||||
password: Joi.string().trim().min(8).max(128).required(),
|
password: Joi.string().trim().min(8).max(128).required(),
|
||||||
confirm_password: Joi.string().trim().min(8).max(128).required(),
|
confirm_password: Joi.string().trim().min(8).max(128).required(),
|
||||||
|
|
|
||||||
|
|
@ -115,13 +115,13 @@ function Registration() {
|
||||||
id="username"
|
id="username"
|
||||||
aria-label={localize('com_auth_username')}
|
aria-label={localize('com_auth_username')}
|
||||||
{...register('username', {
|
{...register('username', {
|
||||||
required: localize('com_auth_username_required'),
|
// required: localize('com_auth_username_required'),
|
||||||
minLength: {
|
minLength: {
|
||||||
value: 3,
|
value: 2,
|
||||||
message: localize('com_auth_username_min_length'),
|
message: localize('com_auth_username_min_length'),
|
||||||
},
|
},
|
||||||
maxLength: {
|
maxLength: {
|
||||||
value: 20,
|
value: 80,
|
||||||
message: localize('com_auth_username_max_length'),
|
message: localize('com_auth_username_max_length'),
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,7 @@ test('shows validation error messages', async () => {
|
||||||
const alerts = getAllByRole('alert');
|
const alerts = getAllByRole('alert');
|
||||||
expect(alerts).toHaveLength(5);
|
expect(alerts).toHaveLength(5);
|
||||||
expect(alerts[0]).toHaveTextContent(/Name must be at least 3 characters/i);
|
expect(alerts[0]).toHaveTextContent(/Name must be at least 3 characters/i);
|
||||||
expect(alerts[1]).toHaveTextContent(/Username must be at least 3 characters/i);
|
expect(alerts[1]).toHaveTextContent(/Username must be at least 2 characters/i);
|
||||||
expect(alerts[2]).toHaveTextContent(/You must enter a valid email address/i);
|
expect(alerts[2]).toHaveTextContent(/You must enter a valid email address/i);
|
||||||
expect(alerts[3]).toHaveTextContent(/Password must be at least 8 characters/i);
|
expect(alerts[3]).toHaveTextContent(/Password must be at least 8 characters/i);
|
||||||
expect(alerts[4]).toHaveTextContent(/Passwords do not match/i);
|
expect(alerts[4]).toHaveTextContent(/Passwords do not match/i);
|
||||||
|
|
|
||||||
|
|
@ -57,9 +57,9 @@ export default {
|
||||||
com_auth_name_required: 'Name is required',
|
com_auth_name_required: 'Name is required',
|
||||||
com_auth_name_min_length: 'Name must be at least 3 characters',
|
com_auth_name_min_length: 'Name must be at least 3 characters',
|
||||||
com_auth_name_max_length: 'Name must be less than 80 characters',
|
com_auth_name_max_length: 'Name must be less than 80 characters',
|
||||||
com_auth_username: 'Username',
|
com_auth_username: 'Username (optional)',
|
||||||
com_auth_username_required: 'Username is required',
|
com_auth_username_required: 'Username is required',
|
||||||
com_auth_username_min_length: 'Username must be at least 3 characters',
|
com_auth_username_min_length: 'Username must be at least 2 characters',
|
||||||
com_auth_username_max_length: 'Username must be less than 20 characters',
|
com_auth_username_max_length: 'Username must be less than 20 characters',
|
||||||
com_auth_already_have_account: 'Already have an account?',
|
com_auth_already_have_account: 'Already have an account?',
|
||||||
com_auth_login: 'Login',
|
com_auth_login: 'Login',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue