fuse-angular/src/app/modules/auth/reset-password/reset-password.component.ts
2022-05-26 13:57:37 +03:00

112 lines
3.3 KiB
TypeScript

import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, NgForm, Validators } from '@angular/forms';
import { finalize } from 'rxjs';
import { fuseAnimations } from '@fuse/animations';
import { FuseValidators } from '@fuse/validators';
import { FuseAlertType } from '@fuse/components/alert';
import { AuthService } from 'app/core/auth/auth.service';
@Component({
selector : 'auth-reset-password',
templateUrl : './reset-password.component.html',
encapsulation: ViewEncapsulation.None,
animations : fuseAnimations
})
export class AuthResetPasswordComponent implements OnInit
{
@ViewChild('resetPasswordNgForm') resetPasswordNgForm: NgForm;
alert: { type: FuseAlertType; message: string } = {
type : 'success',
message: ''
};
resetPasswordForm: UntypedFormGroup;
showAlert: boolean = false;
/**
* Constructor
*/
constructor(
private _authService: AuthService,
private _formBuilder: UntypedFormBuilder
)
{
}
// -----------------------------------------------------------------------------------------------------
// @ Lifecycle hooks
// -----------------------------------------------------------------------------------------------------
/**
* On init
*/
ngOnInit(): void
{
// Create the form
this.resetPasswordForm = this._formBuilder.group({
password : ['', Validators.required],
passwordConfirm: ['', Validators.required]
},
{
validators: FuseValidators.mustMatch('password', 'passwordConfirm')
}
);
}
// -----------------------------------------------------------------------------------------------------
// @ Public methods
// -----------------------------------------------------------------------------------------------------
/**
* Reset password
*/
resetPassword(): void
{
// Return if the form is invalid
if ( this.resetPasswordForm.invalid )
{
return;
}
// Disable the form
this.resetPasswordForm.disable();
// Hide the alert
this.showAlert = false;
// Send the request to the server
this._authService.resetPassword(this.resetPasswordForm.get('password').value)
.pipe(
finalize(() => {
// Re-enable the form
this.resetPasswordForm.enable();
// Reset the form
this.resetPasswordNgForm.resetForm();
// Show the alert
this.showAlert = true;
})
)
.subscribe(
(response) => {
// Set the alert
this.alert = {
type : 'success',
message: 'Your password has been reset.'
};
},
(response) => {
// Set the alert
this.alert = {
type : 'error',
message: 'Something went wrong, please try again.'
};
}
);
}
}