From 70eed32d5a3edd34e608a6e68dbd4203e2fa61ff Mon Sep 17 00:00:00 2001 From: Jeremie BRISON <ext.sopra.jbrison@grandlyon.com> Date: Wed, 10 Feb 2021 17:54:48 +0100 Subject: [PATCH] fix(form) : check if email already used --- src/app/form/form.component.html | 13 +++++++++++-- src/app/form/form.component.scss | 2 +- src/app/form/form.component.ts | 11 +++++++++++ src/app/profile/services/profile.service.ts | 4 ++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/app/form/form.component.html b/src/app/form/form.component.html index 526e3a3ed..1ab1982ba 100644 --- a/src/app/form/form.component.html +++ b/src/app/form/form.component.html @@ -100,8 +100,17 @@ </div> <div class="form-group" fxLayout="column"> <label for="email">Courriel personnel</label> + <p class="special invalid" *ngIf="this.accountForm.get('email').hasError('alreadyExist')"> + L'email est déja utilisé. + </p> <div fxLayout="row" fxLayoutGap="13px"> - <input type="text" (input)="setValidationsForm()" formControlName="email" class="form-input" /> + <input + type="text" + (input)="setValidationsForm()" + (keyup)="verifyUserExist($event.target.value)" + formControlName="email" + class="form-input" + /> <img *ngIf="accountForm.get('email').valid" src="../../assets/form/validate.svg" alt="logo valid" /> <img *ngIf="accountForm.get('email').invalid && accountForm.get('email').value" @@ -113,7 +122,7 @@ <div class="form-group" fxLayout="column"> <label for="password">Création de mot de passe</label> <p - class="password" + class="special" [ngClass]="{ invalid: accountForm.get('password').invalid && accountForm.get('password').value }" > Le mot de passe doit contenir au minimum : 8 caractères dont un caractère spécial, un caractère en majuscule diff --git a/src/app/form/form.component.scss b/src/app/form/form.component.scss index 203a87dac..7169d27ac 100644 --- a/src/app/form/form.component.scss +++ b/src/app/form/form.component.scss @@ -151,7 +151,7 @@ h3 { margin-top: 10px; margin-bottom: 0; @include cn-regular-18; - &.password { + &.special { @include cn-regular-14; color: $grey-3; diff --git a/src/app/form/form.component.ts b/src/app/form/form.component.ts index 6832ffc8a..5da4fa9a6 100644 --- a/src/app/form/form.component.ts +++ b/src/app/form/form.component.ts @@ -557,4 +557,15 @@ export class FormComponent implements OnInit { this.resolve(hasAccept); this.showConfirmationModal = false; } + + public verifyUserExist(inputEmail): void { + if (this.accountForm.get('email').valid) { + this.profileService.isEmailAlreadyUsed(inputEmail).subscribe((isExist) => { + if (isExist) { + this.accountForm.get('email').setErrors({ alreadyExist: true }); + this.setValidationsForm(); + } + }); + } + } } diff --git a/src/app/profile/services/profile.service.ts b/src/app/profile/services/profile.service.ts index a196203fd..849d148b4 100644 --- a/src/app/profile/services/profile.service.ts +++ b/src/app/profile/services/profile.service.ts @@ -67,4 +67,8 @@ export class ProfileService { public changeEmail(newEmail: string, oldEmail: string): Observable<User> { return this.http.post<any>(`${this.baseUrl}/change-email`, { newEmail, oldEmail }); } + + public isEmailAlreadyUsed(newMail: string): Observable<Boolean> { + return this.http.post<Boolean>(`${this.baseUrl}/verify-exist-user`, { newMail }); + } } -- GitLab