|
@@ -1 +1,105 @@
|
|
|
-<p>account-password works!</p>
|
|
|
|
|
|
|
+<app-menu></app-menu>
|
|
|
|
|
+<div id="main">
|
|
|
|
|
+<form [formGroup]="form">
|
|
|
|
|
+
|
|
|
|
|
+ <div class="card shadow center">
|
|
|
|
|
+ <div class="card-header"><span i18n>Changement de votre mot de passe</span></div>
|
|
|
|
|
+ <div class="card-header shadow-sm">
|
|
|
|
|
+ <button (click)="goToAccountDetails()" class="btn bg-gradient btn-primary btn-sm"><i class="fa-solid fa-xmark"></i> <span i18n>Retour</span></button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="card-body">
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Nom</span></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="text" class="form-control form-control-sm field-separate" formControlName="nom">
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Prénom</span></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="text" class="form-control form-control-sm field-separate" formControlName="prenom">
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Pseudonyme</span></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="text" class="form-control form-control-sm field-separate" formControlName="pseudonyme">
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+@if (this.newpassword.erreur !== "") {
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"></label>
|
|
|
|
|
+ <div class="col-sm-8 col-form-label col-form-label-sm">
|
|
|
|
|
+ <div class="alert alert-warning" role="alert">{{ this.newpassword.erreur }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Ancien mot de passe</span> <sup><span class="text-danger">*</span></sup></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="password" class="form-control form-control-sm field-separate" formControlName="oldPassword">
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.controls['oldPassword'].hasError('required')"><span i18n>Par sécurité, l'ancien mot de passe est nécessaire.</span></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Nouveau mot de passe</span> <sup><span class="text-danger">*</span></sup></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="password" class="form-control form-control-sm field-separate" formControlName="newPassword">
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.controls['newPassword'].hasError('required')"><span i18n>Le nouveau mot de passe est requis.</span></div>
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.controls['newPassword'].hasError('pattern')">
|
|
|
|
|
+ <span i18n>Le mot de passe doit remplir ces conditions :</span>
|
|
|
|
|
+ <ul>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('newPassword', 'uppercase')}"><span i18n>Au moins une majuscule.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('newPassword', 'lowercase')}"><span i18n>Au moins une minuscule.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('newPassword', 'special-character')}"><span i18n>Au moins un caractère spécial parmi #$@!%&*?</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('newPassword', 'number')}"><span i18n>Au moins un numérique.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('newPassword', 'length')}"><span i18n>Entre 8 et 16 caractères.</span></li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="form-group row">
|
|
|
|
|
+ <label class="col-sm-4 col-form-label col-form-label-sm label-nobr"><span i18n>Confirmation</span> <sup><span class="text-danger">*</span></sup></label>
|
|
|
|
|
+ <div class="col-sm-8">
|
|
|
|
|
+ <input type="password" class="form-control form-control-sm field-separate" formControlName="confirmNewPassword">
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.controls['confirmNewPassword'].hasError('required')"><span i18n>La confirmation du nouveau mot de passe (double saisie) est requise.</span></div>
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.controls['confirmNewPassword'].hasError('pattern')">
|
|
|
|
|
+ <span i18n>Le mot de passe doit remplir ces conditions :</span>
|
|
|
|
|
+ <ul>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('confirmNewPassword', 'uppercase')}"><span i18n>Au moins une majuscule.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('confirmNewPassword', 'lowercase')}"><span i18n>Au moins une minuscule.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('confirmNewPassword', 'special-character')}"><span i18n>Au moins un caractère spécial parmi #$@!%&*?</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('confirmNewPassword', 'number')}"><span i18n>Au moins un numérique.</span></li>
|
|
|
|
|
+ <li [ngClass]="{'d-none':checkValidations('confirmNewPassword', 'length')}"><span i18n>Entre 8 et 16 caractères.</span></li>
|
|
|
|
|
+ </ul>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="form-text field-separate" *ngIf="form.hasError('notMatched')"><span i18n class="text-danger">La confirmation n'est pas identique au nouveau mot de passe.</span></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="card-footer">
|
|
|
|
|
+ <button type="button" class="btn bg-gradient btn-danger btn-sm text-left" data-bs-toggle="modal" data-bs-target="#modalModifier" [disabled]="!form.valid"><i class="fa-solid fa-pen"></i> <span i18n>Modifier</span></button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</form>
|
|
|
|
|
+
|
|
|
|
|
+<div class="modal fade" id="modalModifier" tabindex="-1" aria-labelledby="modalModifierTitre" aria-hidden="true">
|
|
|
|
|
+ <div class="modal-dialog modal-dialog-centered" role="document">
|
|
|
|
|
+ <div class="modal-content">
|
|
|
|
|
+ <div class="modal-body"><span i18n>Changement du mot de passe ?</span></div>
|
|
|
|
|
+ <div class="modal-footer">
|
|
|
|
|
+ <button type="button" class="btn bg-gradient btn-secondary btn-sm" data-bs-dismiss="modal"><span i18n>Annuler</span></button>
|
|
|
|
|
+ <button type="button" class="btn bg-gradient btn-danger btn-sm" (click)="updatePasswordConfirmed()" data-bs-dismiss="modal"><span i18n>Confirmer</span></button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</div>
|
|
|
|
|
+</div>
|