diff --git a/client/src/app/shared/forms/form-validators/user-validators.service.ts b/client/src/app/shared/forms/form-validators/user-validators.service.ts index 1fd1cdf68ed3..967583cd218d 100644 --- a/client/src/app/shared/forms/form-validators/user-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/user-validators.service.ts @@ -23,15 +23,15 @@ export class UserValidatorsService { this.USER_USERNAME = { VALIDATORS: [ Validators.required, - Validators.minLength(3), - Validators.maxLength(20), - Validators.pattern(/^[a-z0-9._]+$/) + Validators.minLength(1), + Validators.maxLength(50), + Validators.pattern(/^[a-zA-Z0-9][a-zA-Z0-9-._]*$/) ], MESSAGES: { 'required': this.i18n('Username is required.'), - 'minlength': this.i18n('Username must be at least 3 characters long.'), - 'maxlength': this.i18n('Username cannot be more than 20 characters long.'), - 'pattern': this.i18n('Username should be only lowercase alphanumeric characters.') + 'minlength': this.i18n('Username must be at least 1 character long.'), + 'maxlength': this.i18n('Username cannot be more than 50 characters long.'), + 'pattern': this.i18n('Username should start with a letter or number; dots, dashes and underscores are allowed.') } } @@ -88,13 +88,13 @@ export class UserValidatorsService { this.USER_DISPLAY_NAME = { VALIDATORS: [ Validators.required, - Validators.minLength(3), - Validators.maxLength(120) + Validators.minLength(1), + Validators.maxLength(50) ], MESSAGES: { 'required': this.i18n('Display name is required.'), - 'minlength': this.i18n('Display name must be at least 3 characters long.'), - 'maxlength': this.i18n('Display name cannot be more than 120 characters long.') + 'minlength': this.i18n('Display name must be at least 1 characters long.'), + 'maxlength': this.i18n('Display name cannot be more than 50 characters long.') } } diff --git a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts index 1ce3a0dcacea..25d6e44840dc 100644 --- a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts +++ b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts @@ -14,28 +14,28 @@ export class VideoChannelValidatorsService { this.VIDEO_CHANNEL_NAME = { VALIDATORS: [ Validators.required, - Validators.minLength(3), - Validators.maxLength(20), - Validators.pattern(/^[a-z0-9._]+$/) + Validators.minLength(1), + Validators.maxLength(50), + Validators.pattern(/^[a-zA-Z0-9][a-zA-Z0-9-._]*$/) ], MESSAGES: { 'required': this.i18n('Name is required.'), - 'minlength': this.i18n('Name must be at least 3 characters long.'), - 'maxlength': this.i18n('Name cannot be more than 20 characters long.'), - 'pattern': this.i18n('Name should be only lowercase alphanumeric characters.') + 'minlength': this.i18n('Name must be at least 1 characters long.'), + 'maxlength': this.i18n('Name cannot be more than 50 characters long.'), + 'pattern': this.i18n('Name should start with a letter; numbers, dots, dashes and underscores are allowed.') } } this.VIDEO_CHANNEL_DISPLAY_NAME = { VALIDATORS: [ Validators.required, - Validators.minLength(3), - Validators.maxLength(120) + Validators.minLength(1), + Validators.maxLength(50) ], MESSAGES: { 'required': i18n('Display name is required.'), - 'minlength': i18n('Display name must be at least 3 characters long.'), - 'maxlength': i18n('Display name cannot be more than 120 characters long.') + 'minlength': i18n('Display name must be at least 1 characters long.'), + 'maxlength': i18n('Display name cannot be more than 50 characters long.') } } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index e08fd75cd855..2c5b0af74ee7 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -291,9 +291,9 @@ const CONFIG = { const CONSTRAINTS_FIELDS = { USERS: { - NAME: { min: 3, max: 120 }, // Length + NAME: { min: 1, max: 50 }, // Length DESCRIPTION: { min: 3, max: 250 }, // Length - USERNAME: { min: 3, max: 20 }, // Length + USERNAME: { min: 1, max: 50 }, // Length PASSWORD: { min: 6, max: 255 }, // Length VIDEO_QUOTA: { min: -1 }, VIDEO_QUOTA_DAILY: { min: -1 }, @@ -307,7 +307,7 @@ const CONSTRAINTS_FIELDS = { REASON: { min: 2, max: 300 } // Length }, VIDEO_CHANNELS: { - NAME: { min: 3, max: 120 }, // Length + NAME: { min: 1, max: 50 }, // Length DESCRIPTION: { min: 3, max: 500 }, // Length SUPPORT: { min: 3, max: 500 }, // Length URL: { min: 3, max: 2000 } // Length diff --git a/server/tests/api/check-params/users.ts b/server/tests/api/check-params/users.ts index cbfa0c137cd8..e0f0965f5e0d 100644 --- a/server/tests/api/check-params/users.ts +++ b/server/tests/api/check-params/users.ts @@ -99,13 +99,13 @@ describe('Test users API validators', function () { } it('Should fail with a too small username', async function () { - const fields = immutableAssign(baseCorrectParams, { username: 'fi' }) + const fields = immutableAssign(baseCorrectParams, { username: '' }) await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) it('Should fail with a too long username', async function () { - const fields = immutableAssign(baseCorrectParams, { username: 'my_super_username_which_is_very_long' }) + const fields = immutableAssign(baseCorrectParams, { username: 'super'.repeat(11) }) await makePostBodyRequest({ url: server.url, path, token: server.accessToken, fields }) }) @@ -541,13 +541,13 @@ describe('Test users API validators', function () { } it('Should fail with a too small username', async function () { - const fields = immutableAssign(baseCorrectParams, { username: 'ji' }) + const fields = immutableAssign(baseCorrectParams, { username: '' }) await makePostBodyRequest({ url: server.url, path: registrationPath, token: server.accessToken, fields }) }) it('Should fail with a too long username', async function () { - const fields = immutableAssign(baseCorrectParams, { username: 'my_super_username_which_is_very_long' }) + const fields = immutableAssign(baseCorrectParams, { username: 'super'.repeat(11) }) await makePostBodyRequest({ url: server.url, path: registrationPath, token: server.accessToken, fields }) })