Files
buntspecht/frontend/src/app/pages/password/password.page.ts
T
2024-10-27 20:06:51 +01:00

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]);
}
}
}
})
}
}