88 lines
2.5 KiB
TypeScript
88 lines
2.5 KiB
TypeScript
import {Component, OnInit} from '@angular/core';
|
|
import {Router, ActivatedRoute} from '@angular/router';
|
|
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
|
|
|
import {AuthenticationService} from '@app/_services';
|
|
import {Subscription} from "rxjs";
|
|
|
|
@Component({
|
|
selector: 'auth-signup',
|
|
templateUrl: 'signup.component.html',
|
|
styleUrls: ['signup.component.scss', '../login/login.component.scss']
|
|
})
|
|
export class SignupComponent implements OnInit {
|
|
form: FormGroup;
|
|
loading = false;
|
|
error = '';
|
|
asyncErrors: any = {};
|
|
subscription: Subscription;
|
|
|
|
constructor(private formBuilder: FormBuilder, private router: Router, private route: ActivatedRoute, private authenticationService: AuthenticationService) {
|
|
//this.subscription = this.authenticationService.user.subscribe(user => {
|
|
// if (user) this.router.navigate([this.route.snapshot.queryParamMap.get('returnUrl')?.split('(')[0] || 'applications']).then();
|
|
//});
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.form = this.formBuilder.group({
|
|
email: ['', [Validators.required, Validators.email]],
|
|
name: ['', Validators.required],
|
|
phone: [''],
|
|
password: ['', Validators.required],
|
|
passwordConfirmation: ['', Validators.required]
|
|
});
|
|
}
|
|
|
|
ngOnDestroy() {
|
|
this.subscription?.unsubscribe();
|
|
}
|
|
|
|
get f() {
|
|
return this.form.controls;
|
|
}
|
|
get email() {
|
|
return this.f.email;
|
|
}
|
|
get name() {
|
|
return this.f.name;
|
|
}
|
|
get password() {
|
|
return this.f.password;
|
|
}
|
|
get confirmation() {
|
|
return this.f.passwordConfirmation;
|
|
}
|
|
|
|
onSubmit() {
|
|
this.form.markAllAsTouched();
|
|
if (this.form.invalid) return;
|
|
this.loading = true;
|
|
this.authenticationService.signup(this.form.value).subscribe(res => {
|
|
this.authenticationService.getToken(this.email.value, this.password.value).subscribe(res => {
|
|
this.authenticationService.saveToken(res);
|
|
this.close();
|
|
});
|
|
}, error => {
|
|
this.setError(error);
|
|
this.loading = false;
|
|
});
|
|
}
|
|
|
|
setError(error: any) {
|
|
this.asyncErrors = error.errors;
|
|
for (let prop in error.errors) {
|
|
if (error.errors.hasOwnProperty(prop)) this.f[prop].setErrors({custom: true});
|
|
}
|
|
let trans = {'The given data was invalid.': 'Проверьте правильность заполнения формы'};
|
|
this.error = trans[error.message] || error.message;
|
|
}
|
|
|
|
close() {
|
|
this.authenticationService.popup(null);
|
|
}
|
|
|
|
login() {
|
|
this.authenticationService.popup('login');
|
|
}
|
|
}
|