From ad4a8a1cca1049f600ebcdce9260c1021cd821a5 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Sat, 18 Feb 2017 09:29:59 +0100 Subject: Add email to users --- client/src/app/+admin/users/shared/user.service.ts | 3 ++- .../src/app/+admin/users/user-add/user-add.component.html | 11 +++++++++++ client/src/app/+admin/users/user-add/user-add.component.ts | 14 +++++++++++--- .../src/app/+admin/users/user-list/user-list.component.ts | 3 +++ client/src/app/app.component.html | 2 +- .../app/shared/forms/form-validators/email.validator.ts | 13 +++++++++++++ .../src/app/shared/forms/form-validators/host.validator.ts | 2 +- client/src/app/shared/forms/form-validators/index.ts | 1 + client/src/app/shared/forms/form-validators/user.ts | 9 +++++++++ 9 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 client/src/app/shared/forms/form-validators/email.validator.ts (limited to 'client/src') diff --git a/client/src/app/+admin/users/shared/user.service.ts b/client/src/app/+admin/users/shared/user.service.ts index f6d360e09..a92f9c231 100644 --- a/client/src/app/+admin/users/shared/user.service.ts +++ b/client/src/app/+admin/users/shared/user.service.ts @@ -14,9 +14,10 @@ export class UserService { private restExtractor: RestExtractor ) {} - addUser(username: string, password: string) { + addUser(username: string, password: string, email: string) { const body = { username, + email, password }; diff --git a/client/src/app/+admin/users/user-add/user-add.component.html b/client/src/app/+admin/users/user-add/user-add.component.html index 9b76c7c1b..105760f48 100644 --- a/client/src/app/+admin/users/user-add/user-add.component.html +++ b/client/src/app/+admin/users/user-add/user-add.component.html @@ -14,6 +14,17 @@ +
+ + +
+ {{ formErrors.email }} +
+
+
{ this.notificationsService.success('Success', `User ${username} created.`); this.router.navigate([ '/admin/users/list' ]); diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index c27b96e28..69ae4353d 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -40,6 +40,9 @@ export class UserListComponent { username: { title: 'Username' }, + email: { + title: 'Email' + }, role: { title: 'Role', sort: false diff --git a/client/src/app/app.component.html b/client/src/app/app.component.html index 9f2661e12..0c8e18a2f 100644 --- a/client/src/app/app.component.html +++ b/client/src/app/app.component.html @@ -26,6 +26,6 @@
diff --git a/client/src/app/shared/forms/form-validators/email.validator.ts b/client/src/app/shared/forms/form-validators/email.validator.ts new file mode 100644 index 000000000..6a2c3bdca --- /dev/null +++ b/client/src/app/shared/forms/form-validators/email.validator.ts @@ -0,0 +1,13 @@ +import { FormControl } from '@angular/forms'; + +export function validateEmail(c: FormControl) { + // Thanks to http://emailregex.com/ + /* tslint:disable */ + const EMAIL_REGEXP = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + + return EMAIL_REGEXP.test(c.value) ? null : { + email: { + valid: false + } + }; +} diff --git a/client/src/app/shared/forms/form-validators/host.validator.ts b/client/src/app/shared/forms/form-validators/host.validator.ts index ea3e43cb1..ec417e079 100644 --- a/client/src/app/shared/forms/form-validators/host.validator.ts +++ b/client/src/app/shared/forms/form-validators/host.validator.ts @@ -2,7 +2,7 @@ import { FormControl } from '@angular/forms'; export function validateHost(c: FormControl) { // Thanks to http://stackoverflow.com/a/106223 - let HOST_REGEXP = new RegExp( + const HOST_REGEXP = new RegExp( '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' ); diff --git a/client/src/app/shared/forms/form-validators/index.ts b/client/src/app/shared/forms/form-validators/index.ts index ab7c2df31..669411a54 100644 --- a/client/src/app/shared/forms/form-validators/index.ts +++ b/client/src/app/shared/forms/form-validators/index.ts @@ -1,3 +1,4 @@ +export * from './email.validator'; export * from './host.validator'; export * from './user'; export * from './video-abuse'; diff --git a/client/src/app/shared/forms/form-validators/user.ts b/client/src/app/shared/forms/form-validators/user.ts index 5b11ff265..0ad0e2a4b 100644 --- a/client/src/app/shared/forms/form-validators/user.ts +++ b/client/src/app/shared/forms/form-validators/user.ts @@ -1,5 +1,7 @@ import { Validators } from '@angular/forms'; +import { validateEmail } from './email.validator'; + export const USER_USERNAME = { VALIDATORS: [ Validators.required, Validators.minLength(3), Validators.maxLength(20) ], MESSAGES: { @@ -8,6 +10,13 @@ export const USER_USERNAME = { 'maxlength': 'Username cannot be more than 20 characters long.' } }; +export const USER_EMAIL = { + VALIDATORS: [ Validators.required, validateEmail ], + MESSAGES: { + 'required': 'Email is required.', + 'email': 'Email must be valid.', + } +}; export const USER_PASSWORD = { VALIDATORS: [ Validators.required, Validators.minLength(6) ], MESSAGES: { -- cgit v1.2.3