diff --git a/src/app/header/header-popup/login/login.component.html b/src/app/header/header-popup/login/login.component.html index 9e73db8..b954c83 100644 --- a/src/app/header/header-popup/login/login.component.html +++ b/src/app/header/header-popup/login/login.component.html @@ -34,6 +34,7 @@ placeholder="Password"> diff --git a/src/app/header/header-popup/login/login.component.ts b/src/app/header/header-popup/login/login.component.ts index c6d10f2..8b08965 100644 --- a/src/app/header/header-popup/login/login.component.ts +++ b/src/app/header/header-popup/login/login.component.ts @@ -10,6 +10,8 @@ import HttpErrorChecker from 'src/app/shared/model/httpError/httpErrorChecker'; import UserChecker from 'src/app/shared/model/user/user.checker'; import { User } from 'src/app/shared/model/user/user.model'; import {animate, animateChild, group, query, state, style, transition, trigger} from "@angular/animations"; +import {ValidatePasswordValidator} from "../../../shared/validators/validate-password.validator"; +import {ValidateNotEmptyValidator} from "../../../shared/validators/validate-not-empty.validator"; const GOOGLE_LOGO_SVG = "assets/img/providers/google.svg"; @@ -123,8 +125,8 @@ export class LoginComponent implements OnInit, AfterViewInit, OnDestroy { ngOnInit(): void { this.loginForm = new FormGroup({ - 'username': new FormControl(null, [Validators.required]), - 'password': new FormControl(null, [Validators.required]) + 'username': new FormControl(null, [Validators.required, ValidateNotEmptyValidator]), + 'password': new FormControl(null, [Validators.required, ValidatePasswordValidator]) }); this.errorMessage = null; this.authSubject = this.authService.authSubject.subscribe( diff --git a/src/app/header/header-popup/signup/signup.component.html b/src/app/header/header-popup/signup/signup.component.html index af12a22..947eba8 100644 --- a/src/app/header/header-popup/signup/signup.component.html +++ b/src/app/header/header-popup/signup/signup.component.html @@ -53,6 +53,7 @@ placeholder="Password"> diff --git a/src/app/header/header-popup/signup/signup.component.ts b/src/app/header/header-popup/signup/signup.component.ts index 838307c..3b7bf25 100644 --- a/src/app/header/header-popup/signup/signup.component.ts +++ b/src/app/header/header-popup/signup/signup.component.ts @@ -10,6 +10,9 @@ import HttpErrorChecker from 'src/app/shared/model/httpError/httpErrorChecker'; import UserChecker from 'src/app/shared/model/user/user.checker'; import { User } from 'src/app/shared/model/user/user.model'; import {animate, animateChild, group, query, state, style, transition, trigger} from "@angular/animations"; +import {ValidateEmailValidator} from "../../../shared/validators/validate-email.validator"; +import {ValidatePasswordValidator} from "../../../shared/validators/validate-password.validator"; +import {ValidateNotEmptyValidator} from "../../../shared/validators/validate-not-empty.validator"; const GOOGLE_LOGO_SVG = "assets/img/providers/google.svg"; @@ -125,12 +128,12 @@ export class SignupComponent implements OnInit { ngOnInit(): void { this.signupForm = new FormGroup({ - 'fullname': new FormControl(null, [Validators.required]), + 'fullname': new FormControl(null, [Validators.required, ValidateNotEmptyValidator]), // Create a Email Validator - 'email': new FormControl(null, [Validators.required]), - 'username': new FormControl(null, [Validators.required]), + 'email': new FormControl(null, [Validators.required, ValidateEmailValidator]), + 'username': new FormControl(null, [Validators.required, ValidateNotEmptyValidator]), // Create a Password Validator - 'password': new FormControl(null, [Validators.required]) + 'password': new FormControl(null, [Validators.required, ValidatePasswordValidator]) }); this.errorMessage = null; this.authSubject = this.authService.authSubject.subscribe( diff --git a/src/app/shared/validators/validate-email.validator.ts b/src/app/shared/validators/validate-email.validator.ts new file mode 100644 index 0000000..f30c4e3 --- /dev/null +++ b/src/app/shared/validators/validate-email.validator.ts @@ -0,0 +1,11 @@ +import {AbstractControl} from "@angular/forms"; + +export function ValidateEmailValidator(control: AbstractControl) { + const email = control.value; + const emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/g; + const emailValid = emailRegex.test(email); + if (!emailValid) { + return { invalidEmail: true }; + } + return null; +} diff --git a/src/app/shared/validators/validate-not-empty.validator.ts b/src/app/shared/validators/validate-not-empty.validator.ts new file mode 100644 index 0000000..be790a1 --- /dev/null +++ b/src/app/shared/validators/validate-not-empty.validator.ts @@ -0,0 +1,9 @@ +import {AbstractControl} from "@angular/forms"; + +export function ValidateNotEmptyValidator(control: AbstractControl) { + const value = control.value; + if (!value || value.length === 0) { + return { invalidNotEmpty: true }; + } + return null; +} diff --git a/src/app/shared/validators/validate-password.validator.ts b/src/app/shared/validators/validate-password.validator.ts new file mode 100644 index 0000000..71817d0 --- /dev/null +++ b/src/app/shared/validators/validate-password.validator.ts @@ -0,0 +1,11 @@ +import {AbstractControl} from "@angular/forms"; + +export function ValidatePasswordValidator(control: AbstractControl) { + var password = control.value; + var passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/g; + var passwordValid = passwordRegex.test(password); + if (!passwordValid) { + return { invalidPassword: true }; + } + return null; +}