Ajout de check et messages d'erreur

sur les formulaires de connexion et
création d'utilisateur.
This commit is contained in:
Sébastien André
2020-03-26 11:35:23 +01:00
parent 777e5e47b2
commit 50785a4914
4 changed files with 30 additions and 11 deletions

View File

@@ -5,6 +5,7 @@
[ngClass]="{ 'is-invalid': submitted && createCtrls.firstname.errors }" /> [ngClass]="{ 'is-invalid': submitted && createCtrls.firstname.errors }" />
<div *ngIf="submitted && createCtrls.firstname.errors" class="invalid-feedback"> <div *ngIf="submitted && createCtrls.firstname.errors" class="invalid-feedback">
<div *ngIf="createCtrls.firstname.errors.required">Firstname is required</div> <div *ngIf="createCtrls.firstname.errors.required">Firstname is required</div>
<div *ngIf="createCtrls.firstname.errors.minlength">Firstname must have min 3 characters</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -13,6 +14,7 @@
[ngClass]="{ 'is-invalid': submitted && createCtrls.lastname.errors }" /> [ngClass]="{ 'is-invalid': submitted && createCtrls.lastname.errors }" />
<div *ngIf="submitted && createCtrls.lastname.errors" class="invalid-feedback"> <div *ngIf="submitted && createCtrls.lastname.errors" class="invalid-feedback">
<div *ngIf="createCtrls.lastname.errors.required">Lastname is required</div> <div *ngIf="createCtrls.lastname.errors.required">Lastname is required</div>
<div *ngIf="createCtrls.lastname.errors.minlength">Lastname must have min 3 characters</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -21,6 +23,7 @@
[ngClass]="{ 'is-invalid': submitted && createCtrls.email.errors }" /> [ngClass]="{ 'is-invalid': submitted && createCtrls.email.errors }" />
<div *ngIf="submitted && createCtrls.email.errors" class="invalid-feedback"> <div *ngIf="submitted && createCtrls.email.errors" class="invalid-feedback">
<div *ngIf="createCtrls.email.errors.required">E-mail is required</div> <div *ngIf="createCtrls.email.errors.required">E-mail is required</div>
<div *ngIf="createCtrls.email.errors.email">It's not a e-mail</div>
</div> </div>
</div> </div>
@@ -30,6 +33,7 @@
[ngClass]="{ 'is-invalid': submitted && createCtrls.username.errors }" /> [ngClass]="{ 'is-invalid': submitted && createCtrls.username.errors }" />
<div *ngIf="submitted && createCtrls.username.errors" class="invalid-feedback"> <div *ngIf="submitted && createCtrls.username.errors" class="invalid-feedback">
<div *ngIf="createCtrls.username.errors.required">Username is required</div> <div *ngIf="createCtrls.username.errors.required">Username is required</div>
<div *ngIf="createCtrls.username.errors.minlength">Username must have min 3 characters</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -38,6 +42,8 @@
[ngClass]="{ 'is-invalid': submitted && createCtrls.password.errors }" /> [ngClass]="{ 'is-invalid': submitted && createCtrls.password.errors }" />
<div *ngIf="submitted && createCtrls.password.errors" class="invalid-feedback"> <div *ngIf="submitted && createCtrls.password.errors" class="invalid-feedback">
<div *ngIf="createCtrls.password.errors.required">Password is required</div> <div *ngIf="createCtrls.password.errors.required">Password is required</div>
<div *ngIf="createCtrls.password.errors.pattern">The pattern of the password ([A-Za-z0-9_-]
{{ '{' }}8,15{{ '}' }})</div>
</div> </div>
</div> </div>

View File

@@ -33,11 +33,14 @@ export class CreateUserComponent implements OnInit {
ngOnInit() { ngOnInit() {
this.createForm = this.formBuilder.group({ this.createForm = this.formBuilder.group({
username: ["", Validators.required], username: ["", [Validators.required, Validators.minLength(3)]],
password: ["", Validators.required], password: [
firstname: ["", Validators.required], "",
lastname: ["", Validators.required], [Validators.required, Validators.pattern("^[A-Za-z0-9_-]{8,15}$")]
email: ["", Validators.required] ],
firstname: ["", [Validators.required, Validators.minLength(3)]],
lastname: ["", [Validators.required, Validators.minLength(3)]],
email: ["", [Validators.required, Validators.email]]
}); });
// get return url from route parameters or default to '/' // get return url from route parameters or default to '/'
@@ -49,14 +52,15 @@ export class CreateUserComponent implements OnInit {
} }
onCreateSubmit() { onCreateSubmit() {
this.loading = true;
this.submitted = true; this.submitted = true;
// stop here if form is invalid // stop here if form is invalid
if (this.createForm.invalid) { if (this.createForm.invalid) {
this.loading = true;
return; return;
} }
this.loading = true;
let createUser = new User(); let createUser = new User();
createUser.login = this.createCtrls.username.value; createUser.login = this.createCtrls.username.value;
createUser.password = this.createCtrls.password.value; createUser.password = this.createCtrls.password.value;

View File

@@ -5,6 +5,7 @@
[ngClass]="{ 'is-invalid': submitted && loginCtrls.username.errors }" /> [ngClass]="{ 'is-invalid': submitted && loginCtrls.username.errors }" />
<div *ngIf="submitted && loginCtrls.username.errors" class="invalid-feedback"> <div *ngIf="submitted && loginCtrls.username.errors" class="invalid-feedback">
<div *ngIf="loginCtrls.username.errors.required">Username is required</div> <div *ngIf="loginCtrls.username.errors.required">Username is required</div>
<div *ngIf="createCtrls.username.errors.minlength">Username must have min 3 characters</div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@@ -12,7 +13,9 @@
<input type="password" formControlName="password" class="form-control" <input type="password" formControlName="password" class="form-control"
[ngClass]="{ 'is-invalid': submitted && loginCtrls.password.errors }" /> [ngClass]="{ 'is-invalid': submitted && loginCtrls.password.errors }" />
<div *ngIf="submitted && loginCtrls.password.errors" class="invalid-feedback"> <div *ngIf="submitted && loginCtrls.password.errors" class="invalid-feedback">
<div *ngIf="loginCtrls.password.errors.required">Password is required</div> <div *ngIf="createCtrls.password.errors.required">Password is required</div>
<div *ngIf="createCtrls.password.errors.pattern">The pattern of the password ([A-Za-z0-9_-]
{{ '{' }}8,15{{ '}' }})</div>
</div> </div>
</div> </div>
<button [disabled]="loading" class="btn btn-primary"> <button [disabled]="loading" class="btn btn-primary">

View File

@@ -31,10 +31,16 @@ export class LoginUserComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.loginForm = this.formBuilder.group({ this.loginForm = this.formBuilder.group(
username: ["", Validators.required], {
password: ["", Validators.required] username: ["", [Validators.required, Validators.minLength(3)]],
}); password: [
"",
[Validators.required, Validators.pattern("^[A-Za-z0-9_-]{8,15}$")]
]
},
{ updateOn: "blur" }
);
// get return url from route parameters or default to '/' // get return url from route parameters or default to '/'
this.returnUrl = this.route.snapshot.queryParams["returnUrl"] || "/"; this.returnUrl = this.route.snapshot.queryParams["returnUrl"] || "/";