Jucundus/client/src/app/features/auth/login/login.component.ts

69 lines
2.3 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { UntypedFormControl, Validators, UntypedFormGroup } from '@angular/forms';
import { Title } from '@angular/platform-browser';
import { AuthenticationService } from 'src/app/core/services/auth.service';
import { NotificationService } from 'src/app/core/services/notification.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
loginForm!: UntypedFormGroup;
loading!: boolean;
constructor(private router: Router,
private titleService: Title,
private notificationService: NotificationService,
private authenticationService: AuthenticationService) {
}
ngOnInit() {
this.titleService.setTitle('Jucundus - Login');
this.authenticationService.logout();
this.createForm();
}
private createForm() {
const savedUserEmail = localStorage.getItem('savedUserEmail');
this.loginForm = new UntypedFormGroup({
email: new UntypedFormControl(savedUserEmail, [Validators.required, Validators.email]),
password: new UntypedFormControl('', Validators.required),
rememberMe: new UntypedFormControl(savedUserEmail !== null)
});
}
login() {
const email = this.loginForm.get('email')?.value;
const password = this.loginForm.get('password')?.value;
const rememberMe = this.loginForm.get('rememberMe')?.value;
this.loading = true;
this.authenticationService
.login(email.toLowerCase(), password)
.subscribe(
data => {
if (rememberMe) {
localStorage.setItem('savedUserEmail', email);
} else {
localStorage.removeItem('savedUserEmail');
}
this.router.navigate(['dashboard']);
},
error => {
this.notificationService.openSnackBar(error.error.message);
this.loading = false;
}
);
}
resetPassword() {
this.router.navigate(['/auth/password-reset-request']);
}
}