70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import { Component, OnDestroy, OnInit } from '@angular/core';
|
|
import { AbstractControlOptions, FormBuilder, FormGroup, Validators } from '@angular/forms';
|
|
|
|
import { UserService } from '../../services/user.service';
|
|
import { MatchingValidator } from 'src/app/utils/matching.validator';
|
|
|
|
@Component({
|
|
selector: 'page-password',
|
|
templateUrl: './password.page.html',
|
|
styleUrls: ['./password.page.scss']
|
|
})
|
|
export class PagePassword implements OnInit, OnDestroy {
|
|
|
|
auth: any;
|
|
working: boolean = false;
|
|
passwordSuccess: boolean = false;
|
|
passwordForm: FormGroup;
|
|
|
|
constructor(
|
|
private userService: UserService,
|
|
private formBuilder: FormBuilder) { }
|
|
|
|
ngOnInit(): void {
|
|
this.passwordForm = this.formBuilder.group({
|
|
old: ['', Validators.nullValidator],
|
|
password: ['', Validators.nullValidator],
|
|
password2: ['', Validators.nullValidator]
|
|
}, {
|
|
validator: MatchingValidator('password', 'password2')
|
|
} as AbstractControlOptions);
|
|
}
|
|
|
|
ngOnDestroy(): void {
|
|
}
|
|
|
|
passwordHasError(controlName: string): boolean {
|
|
return this.passwordForm.controls[controlName].errors != null;
|
|
}
|
|
|
|
setPassword() {
|
|
if (this.working) {
|
|
return;
|
|
}
|
|
|
|
this.working = true;
|
|
this.passwordSuccess = false;
|
|
this.userService.setPassword(this.passwordForm.get('old').value, this.passwordForm.get('password').value, this.passwordForm.get('password2').value).subscribe({
|
|
next: () => {
|
|
this.working = false;
|
|
this.passwordSuccess = true;
|
|
},
|
|
error: (error) => {
|
|
this.working = false;
|
|
if (error.status == 409) {
|
|
let errors = {};
|
|
for (let errorObject of error.error) {
|
|
errors[errorObject.field] = errors[errorObject.field] || {};
|
|
errors[errorObject.field][errorObject.code] = errorObject.arguments || true;
|
|
}
|
|
|
|
for (let code in errors) {
|
|
this.passwordForm.get(code).setErrors(errors[code]);
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|