From d74d76aff00a94ed7d816a79d0bb137d3a0456a0 Mon Sep 17 00:00:00 2001
From: Jeremy Kim
Date: Tue, 2 Oct 2018 23:43:32 -0700
Subject: [PATCH 1/3] added password confirmation validation
---
src/pages/register/register.html | 20 ++++++++++-------
src/pages/register/register.ts | 32 ++++++++++++++++++++++------
src/validators/password.validator.ts | 12 ++++++++++-
3 files changed, 48 insertions(+), 16 deletions(-)
diff --git a/src/pages/register/register.html b/src/pages/register/register.html
index b5c5ae9e..4337a9fd 100644
--- a/src/pages/register/register.html
+++ b/src/pages/register/register.html
@@ -47,7 +47,6 @@
Enter a valid name
-
Enter a valid email
-
+
+ [class.invalid]="!validate.controls.pass.controls.password.valid && (validate.controls.pass.controls.password.dirty || submitAttempt)">
-
+
Enter a password between 6-30 characters using only letters and numbers
-
+ [class.invalid]="!validate.controls.pass.controls.passwordCheck.valid && (validate.controls.pass.controls.passwordCheck.dirty || submitAttempt)">
-
- Passwords do not match
+
+ Password does not match
+
+
diff --git a/src/pages/register/register.ts b/src/pages/register/register.ts
index 029f8bd1..4ceb4f8f 100644
--- a/src/pages/register/register.ts
+++ b/src/pages/register/register.ts
@@ -11,17 +11,35 @@ import { PasswordValidator } from '../../validators/password.validator';
export class RegisterPage {
private validate: FormGroup
+ private confirmPassword: FormGroup
submitAttempt: boolean = false;
- constructor(public navCtrl: NavController, public navParams: NavParams, private fb: FormBuilder) {
-
- this.validate = this.fb.group({
+ constructor(public navCtrl: NavController, public navParams: NavParams, private formbuilder: FormBuilder) {
+ /*
+ this.confirmPassword = new FormGroup({
+ password: new FormControl('', Validators.compose([
+ Validators.minLength(6),
+ Validators.maxLength(30),
+ Validators.required,
+ Validators.pattern('[a-zA-Z0-9 ]*') //'^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$'
+ ])),
+ passwordCheck: new FormControl('', Validators.required)
+ }, (formGroup: FormGroup) => {
+ return PasswordValidator.areEqual(formGroup);
+ });
+ */
+
+ this.validate = this.formbuilder.group({
first: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
last: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
- email: ['', Validators.compose([Validators.required,
- Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
- password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
- passwordCheck: ['', Validators.required]
+ email: ['', Validators.compose([Validators.required, Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
+ //passwordValidation: this.confirmPassword
+ pass: this.formbuilder.group({
+ password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
+ passwordCheck: ['', Validators.required]
+ }, {validator: PasswordValidator})
+ //password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
+ //passwordCheck: ['', Validators.required]
})
}
diff --git a/src/validators/password.validator.ts b/src/validators/password.validator.ts
index abd5bfe9..8a253f39 100644
--- a/src/validators/password.validator.ts
+++ b/src/validators/password.validator.ts
@@ -1,3 +1,12 @@
+export const PasswordValidator = (control: AbstractControl): {[key: string]: boolean} => {
+ const password = control.get('password');
+ const passwordCheck = control.get('passwordCheck');
+ if (!password || !passwordCheck) {
+ return null;
+ }
+ return password.value === passwordCheck.value ? null : { nomatch: true };
+ };
+/*
import { FormControl, FormGroup } from '@angular/forms';
export class PasswordValidator {
@@ -29,4 +38,5 @@ export class PasswordValidator {
areEqual: true
};
}
-}
\ No newline at end of file
+}
+*/
\ No newline at end of file
From 621d0090f144276e070220b0ad80d8ecde8d6fb2 Mon Sep 17 00:00:00 2001
From: Jeremy Kim
Date: Tue, 2 Oct 2018 23:48:36 -0700
Subject: [PATCH 2/3] cleaned file of notes and unnecessary code
---
src/pages/register/register.ts | 19 +------------------
1 file changed, 1 insertion(+), 18 deletions(-)
diff --git a/src/pages/register/register.ts b/src/pages/register/register.ts
index 4ceb4f8f..a0287e55 100644
--- a/src/pages/register/register.ts
+++ b/src/pages/register/register.ts
@@ -1,6 +1,6 @@
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
-import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
+import { Validators, FormBuilder, FormGroup} from '@angular/forms';
import { PasswordValidator } from '../../validators/password.validator';
@@ -11,35 +11,18 @@ import { PasswordValidator } from '../../validators/password.validator';
export class RegisterPage {
private validate: FormGroup
- private confirmPassword: FormGroup
submitAttempt: boolean = false;
constructor(public navCtrl: NavController, public navParams: NavParams, private formbuilder: FormBuilder) {
- /*
- this.confirmPassword = new FormGroup({
- password: new FormControl('', Validators.compose([
- Validators.minLength(6),
- Validators.maxLength(30),
- Validators.required,
- Validators.pattern('[a-zA-Z0-9 ]*') //'^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]+$'
- ])),
- passwordCheck: new FormControl('', Validators.required)
- }, (formGroup: FormGroup) => {
- return PasswordValidator.areEqual(formGroup);
- });
- */
this.validate = this.formbuilder.group({
first: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
last: ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
email: ['', Validators.compose([Validators.required, Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')])],
- //passwordValidation: this.confirmPassword
pass: this.formbuilder.group({
password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
passwordCheck: ['', Validators.required]
}, {validator: PasswordValidator})
- //password: ['', Validators.compose([Validators.minLength(6), Validators.maxLength(30), Validators.pattern('[a-zA-Z0-9 ]*'), Validators.required])],
- //passwordCheck: ['', Validators.required]
})
}
From 3fc0f2bc7cebb8e20e66d27ad4f532a0dea9177c Mon Sep 17 00:00:00 2001
From: Jeremy Kim
Date: Wed, 3 Oct 2018 00:44:36 -0700
Subject: [PATCH 3/3] fi.validator.ts
---
src/validators/password.validator.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/validators/password.validator.ts b/src/validators/password.validator.ts
index 8a253f39..dc83b48e 100644
--- a/src/validators/password.validator.ts
+++ b/src/validators/password.validator.ts
@@ -1,3 +1,5 @@
+import { AbstractControl } from '@angular/forms'
+
export const PasswordValidator = (control: AbstractControl): {[key: string]: boolean} => {
const password = control.get('password');
const passwordCheck = control.get('passwordCheck');