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