Teso Business 2.0 angular source code https://bacwaredev.barhendev.com/teso
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

129 lines
3.9 KiB

import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';
import { FormBuilder, FormGroup, NgForm, Validators } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { tesoAnimations } from '@teso/animations';
import { AuthService } from 'app/core/auth/auth.service';
import { UserService } from 'app/core/user/user.service';
import { tesoAlertType } from '@teso/components/alert';
@Component({
selector : 'auth-unlock-session',
templateUrl : './unlock-session.component.html',
encapsulation: ViewEncapsulation.None,
animations : tesoAnimations
})
export class AuthUnlockSessionComponent implements OnInit
{
@ViewChild('unlockSessionNgForm') unlockSessionNgForm: NgForm;
alert: { type: tesoAlertType; message: string } = {
type : 'success',
message: ''
};
name: string;
showAlert: boolean = false;
unlockSessionForm: FormGroup;
private _email: string;
/**
* Constructor
*/
constructor(
private _activatedRoute: ActivatedRoute,
private _authService: AuthService,
private _formBuilder: FormBuilder,
private _router: Router,
private _userService: UserService
)
{
}
// -----------------------------------------------------------------------------------------------------
// @ Lifecycle hooks
// -----------------------------------------------------------------------------------------------------
/**
* On init
*/
ngOnInit(): void
{
// Get the user's name
this._userService.user$.subscribe((user) => {
this.name = user.name;
this._email = user.email;
});
// Create the form
this.unlockSessionForm = this._formBuilder.group({
name : [
{
value : this.name,
disabled: true
}
],
password: ['', Validators.required]
});
}
// -----------------------------------------------------------------------------------------------------
// @ Public methods
// -----------------------------------------------------------------------------------------------------
/**
* Unlock
*/
unlock(): void
{
// Return if the form is invalid
if ( this.unlockSessionForm.invalid )
{
return;
}
// Disable the form
this.unlockSessionForm.disable();
// Hide the alert
this.showAlert = false;
this._authService.unlockSession({
email : this._email ?? '',
password: this.unlockSessionForm.get('password').value
}).subscribe(
() => {
// Set the redirect url.
// The '/signed-in-redirect' is a dummy url to catch the request and redirect the user
// to the correct page after a successful sign in. This way, that url can be set via
// routing file and we don't have to touch here.
const redirectURL = this._activatedRoute.snapshot.queryParamMap.get('redirectURL') || '/signed-in-redirect';
// Navigate to the redirect url
this._router.navigateByUrl(redirectURL);
},
(response) => {
// Re-enable the form
this.unlockSessionForm.enable();
// Reset the form
this.unlockSessionNgForm.resetForm({
name: {
value : this.name,
disabled: true
}
});
// Set the alert
this.alert = {
type : 'error',
message: 'Invalid password'
};
// Show the alert
this.showAlert = true;
}
);
}
}