From d0ce42c1c17054b7e0c5081243152c32ecb1c193 Mon Sep 17 00:00:00 2001 From: BRAINS YUM <43896676+McFlat@users.noreply.github.com> Date: Fri, 7 Dec 2018 07:54:33 -0600 Subject: [PATCH] username/display_name/video_channel_name min length 1 and max length 50 (#1265) * make username, display_name and video_channel_name min length 1 and max length 50; (fixes #1263); ! still some bug on the frontend complains but if you remove the disabled property it creates the account just fine; allow for usernames to start with a number; fix test, since username can be 1 char now make test check empty; fix test, Should fail with a too long username; fix test, Should fail with a too small username; fix regular expression for username and videoChannel; change username, videoChannel to be lowercase and fix message; * change 1 characters to 1 character --- .../user-validators.service.ts | 20 +++++++++---------- .../video-channel-validators.service.ts | 20 +++++++++---------- server/initializers/constants.ts | 6 +++--- server/tests/api/check-params/users.ts | 8 ++++---- 4 files changed, 27 insertions(+), 27 deletions(-) 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 d14fa4777..66543657a 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-z0-9][a-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 be lowercase alphanumeric; 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 character 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 f62ff65f7..7df4f6adf 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-z0-9][a-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 character long.'), + 'maxlength': this.i18n('Name cannot be more than 50 characters long.'), + 'pattern': this.i18n('Name should be lowercase alphanumeric; 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 character 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 6b798875c..d4496bc34 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -300,9 +300,9 @@ const CONFIG = { const CONSTRAINTS_FIELDS = { USERS: { - NAME: { min: 3, max: 120 }, // Length + NAME: { min: 1, max: 50 }, // Length DESCRIPTION: { min: 3, max: 1000 }, // 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 }, @@ -316,7 +316,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: 1000 }, // Length SUPPORT: { min: 3, max: 1000 }, // 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 273be1679..ee225dc2e 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 }) }) @@ -550,13 +550,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 }) })