Files
openaccounting-web/src/app/register/register.ts

71 lines
1.9 KiB
TypeScript
Raw Normal View History

2018-10-19 11:28:08 -04:00
import { Component } from '@angular/core';
import { Logger } from '../core/logger';
import {
FormGroup,
Validators,
FormBuilder,
AbstractControl
} from '@angular/forms';
import { UserService } from '../core/user.service';
import { ConfigService } from '../core/config.service';
import { User } from '../shared/user';
import { AppError } from '../shared/error';
import { Util } from '../shared/util';
@Component({
selector: 'app-register',
templateUrl: 'register.html'
})
export class RegisterPage {
public registered: boolean = false;
private form: FormGroup;
private email: string;
private error: AppError;
constructor(
private log: Logger,
private userService: UserService,
private configService: ConfigService,
private fb: FormBuilder
) {
this.form = fb.group({
'firstName': ['', Validators.required],
'lastName': ['', Validators.required],
'email': ['', Validators.required],
'password': ['', Validators.required],
'password2': ['', Validators.required],
'agreeToTerms': [false, Validators.required]
}, {
validator: this.passwordMatchValidator
});
}
onSubmit() {
let formUser = new User(this.form.value);
formUser.id = Util.newGuid();
2018-11-05 09:40:02 -05:00
formUser.signupSource = 'web';
2018-10-19 11:28:08 -04:00
this.log.debug(formUser);
this.userService.postUser(formUser)
.subscribe(
user => {
this.log.debug(user);
this.registered = true;
this.email = user.email;
},
error => {
this.log.debug('An error occurred!');
this.log.debug(error);
this.error = error;
}
);
}
passwordMatchValidator(control: AbstractControl) {
if(control.get('password').value === control.get('password2').value) {
return null;
} else {
control.get('password2').setErrors({mismatchedPassword: true});
}
}
}