From 02f75f2fbfb312880c210694ff26f24b0eb0a1a8 Mon Sep 17 00:00:00 2001 From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com> Date: Tue, 8 Dec 2020 12:11:58 +0100 Subject: [PATCH] fix(auth): add regex for password check + add email already in use msg --- .../signin-modal/signin-modal.component.html | 6 ++++-- .../components/signin-modal/signin-modal.component.ts | 11 +++++++++-- src/app/shared/validator/form.ts | 5 ----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/app/shared/components/signin-modal/signin-modal.component.html b/src/app/shared/components/signin-modal/signin-modal.component.html index c4e3795c3..4d0b4c3de 100644 --- a/src/app/shared/components/signin-modal/signin-modal.component.html +++ b/src/app/shared/components/signin-modal/signin-modal.component.html @@ -30,7 +30,7 @@ /> <div *ngIf="submitted && f.password.errors" class="invalid-feedback"> <div *ngIf="f.password.errors.required">Le mot de passe est obligatoire</div> - <div *ngIf="f.password.errors.minlength"> + <div *ngIf="f.password.errors.pattern"> Le mot de passe doit avoir au minimun 8 caractères, une majuscule, une minuscule, un chiffre et un caractère spécial. </div> @@ -46,10 +46,12 @@ [ngClass]="{ 'is-invalid': submitted && f.confirmPassword.errors }" /> <div *ngIf="submitted && f.confirmPassword.errors" class="invalid-feedback"> - <div *ngIf="f.confirmPassword.errors.required">Le mot de passe est obligatoire</div> + <div *ngIf="f.confirmPassword.errors.required">La confirmation du mot de passe est obligatoire</div> <div *ngIf="f.confirmPassword.errors.mustMatch">Les mot de passe ne sont pas les mêmes</div> </div> </div> + + <div *ngIf="userAlreadyExist">Cette addresse mail est déjà utilisée</div> <div class="form-group"> <button [disabled]="loading" class="btn btn-primary"> <span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span> diff --git a/src/app/shared/components/signin-modal/signin-modal.component.ts b/src/app/shared/components/signin-modal/signin-modal.component.ts index 10acd554c..33996e503 100644 --- a/src/app/shared/components/signin-modal/signin-modal.component.ts +++ b/src/app/shared/components/signin-modal/signin-modal.component.ts @@ -14,6 +14,7 @@ export class SignInModalComponent implements OnInit { public loading = false; public submitted = false; public success = false; + public userAlreadyExist = false; constructor(private formBuilder: FormBuilder, private authService: AuthService) {} @@ -24,7 +25,10 @@ export class SignInModalComponent implements OnInit { this.form = this.formBuilder.group( { email: ['', Validators.required], - password: ['', [Validators.required, Validators.minLength(8)]], + password: [ + '', + [Validators.required, Validators.pattern(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/)], + ], confirmPassword: ['', [Validators.required, Validators.minLength(8)]], }, { validator: MustMatch('password', 'confirmPassword') } @@ -53,11 +57,14 @@ export class SignInModalComponent implements OnInit { .register(this.form.value) .pipe(first()) .subscribe( - (data) => { + () => { this.success = true; }, (error) => { this.loading = false; + if (error.error.statusCode === 400) { + this.userAlreadyExist = true; + } } ); } diff --git a/src/app/shared/validator/form.ts b/src/app/shared/validator/form.ts index a909bf03f..1a1cc906d 100644 --- a/src/app/shared/validator/form.ts +++ b/src/app/shared/validator/form.ts @@ -6,11 +6,6 @@ export function MustMatch(controlName: string, matchingControlName: string): any const control = formGroup.controls[controlName]; const matchingControl = formGroup.controls[matchingControlName]; - if (matchingControl.errors && !matchingControl.errors.mustMatch) { - // return if another validator has already found an error on the matchingControl - return; - } - // set error on matchingControl if validation fails if (control.value !== matchingControl.value) { matchingControl.setErrors({ mustMatch: true }); -- GitLab