Skip to content

Commit 04f4300

Browse files
committed
login page validation works
1 parent 9db5293 commit 04f4300

File tree

3 files changed

+66
-36
lines changed

3 files changed

+66
-36
lines changed

src/pages/login/login.html

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,51 @@
88

99

1010
<ion-content padding>
11-
<ion-grid align="center">
12-
<ion-row>
13-
<ion-col>
14-
<form [formGroup]="form">
15-
<ion-list>
11+
<form [formGroup]="form" novalidate (submit)="authenticate()">
12+
<ion-grid align="center">
13+
<ion-row>
14+
<ion-col>
1615
<ion-item>
1716
<ion-input type="text" placeholder="Email" formControlName="username" autocorrect="off" autocapitalize="none"></ion-input>
1817
</ion-item>
18+
</ion-col>
19+
</ion-row>
20+
<ion-row *ngIf="!form.controls.username.valid && (form.controls.username.dirty && hasSubmitted)">
21+
<ion-col>
22+
<ion-item class="error-message">
23+
Should be a valid email
24+
</ion-item>
25+
</ion-col>
26+
</ion-row>
27+
<ion-row>
28+
<ion-col>
1929
<ion-item>
2030
<ion-input type="password" placeholder="Password" formControlName="password"></ion-input>
2131
</ion-item>
32+
</ion-col>
33+
</ion-row>
34+
<ion-row *ngIf="!form.controls.password.valid && (form.controls.password.dirty && hasSubmitted)">
35+
<ion-col>
36+
<ion-item class="error-message">
37+
Password should be at least 4 characters long
38+
</ion-item>
39+
</ion-col>
40+
</ion-row>
41+
<ion-row>
42+
<ion-col>
2243
<ion-item>
2344
<ion-label>Remember me</ion-label>
2445
<ion-checkbox formControlName="rememberMe"></ion-checkbox>
2546
</ion-item>
26-
</ion-list>
27-
</form>
28-
</ion-col>
29-
</ion-row>
30-
<ion-row>
31-
<ion-col>
32-
<button ion-button block color="secondary" (click)="authenticate()">
33-
Login
34-
</button>
35-
</ion-col>
36-
</ion-row>
37-
</ion-grid>
47+
</ion-col>
48+
</ion-row>
49+
<ion-row>
50+
<ion-col>
51+
<button ion-button block color="secondary" type="submit" [disabled]="false">
52+
Login
53+
</button>
54+
</ion-col>
55+
</ion-row>
56+
</ion-grid>
57+
</form>
3858
</ion-content>

src/pages/login/login.scss

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
page-login {
2-
2+
.error-message{
3+
color: red;
4+
font-size: small;
5+
}
36
}

src/pages/login/login.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ import {HomePage} from "../home/home";
1919
export class LoginPage {
2020

2121
form: FormGroup;
22+
hasSubmitted: boolean = false;
2223

2324
constructor(public navCtrl: NavController, public navParams: NavParams,
2425
private formBuilder: FormBuilder,private authService: AuthService,
2526
private loadingController: LoadingController, private alertController: AlertController) {
2627
this.form = this.formBuilder.group({
27-
username: ['', Validators.required],
28-
password: ['', Validators.required],
28+
username: ['', Validators.email],
29+
password: ['', [Validators.required, Validators.minLength(4)]],
2930
rememberMe: [true]
3031
});
3132

@@ -40,23 +41,29 @@ export class LoginPage {
4041
}
4142

4243
authenticate(){
43-
let loader = this.loadingController.create({
44-
content: "Logging in. Please wait..."
45-
});
46-
loader.present();
47-
this.authService.authenticate(this.form.value)
48-
.subscribe((user: User) => {
49-
loader.dismissAll();
50-
this.navCtrl.setRoot(HomePage);
51-
}, (error: any) => {
52-
loader.dismissAll();
53-
let message = this.alertController.create({
54-
title: 'Login Error',
55-
subTitle: 'Invalid username and/or password. If you registered already, please make sure to verify your email.',
56-
buttons: ['OK']
57-
});
58-
message.present();
44+
this.hasSubmitted = true;
45+
46+
if(this.form.valid){
47+
let loader = this.loadingController.create({
48+
content: "Logging in. Please wait..."
5949
});
50+
loader.present();
51+
this.authService.authenticate(this.form.value)
52+
.subscribe((user: User) => {
53+
loader.dismissAll();
54+
this.navCtrl.setRoot(HomePage);
55+
}, (error: any) => {
56+
loader.dismissAll();
57+
let message = this.alertController.create({
58+
title: 'Login Error',
59+
subTitle: 'Invalid username and/or password. If you registered already, please make sure to verify your email.',
60+
buttons: ['OK']
61+
});
62+
message.present();
63+
});
64+
}else {
65+
66+
}
6067
}
6168

6269
}

0 commit comments

Comments
 (0)