61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
|
|
import {FormsModule} from "@angular/forms";
|
|
import {NgIf} from "@angular/common";
|
|
import {AuthService} from '../../services/auth.service';
|
|
import {TokenStorageService} from '../../services/token-storage.service';
|
|
|
|
@Component({
|
|
selector: 'app-login',
|
|
templateUrl: './login.component.html',
|
|
imports: [
|
|
FormsModule,
|
|
NgIf
|
|
],
|
|
styleUrls: ['./login.component.scss']
|
|
})
|
|
export class LoginComponent implements OnInit {
|
|
|
|
form: any = {
|
|
username: null,
|
|
password: null
|
|
};
|
|
isLoggedIn = false;
|
|
isLoginFailed = false;
|
|
errorMessage = '';
|
|
roles: string[] = [];
|
|
|
|
constructor(private authService: AuthService, private tokenStorage: TokenStorageService) { }
|
|
|
|
ngOnInit(): void {
|
|
if (this.tokenStorage.getToken()) {
|
|
this.isLoggedIn = true;
|
|
this.roles = this.tokenStorage.getUser().roles;
|
|
}
|
|
}
|
|
|
|
onSubmit(): void {
|
|
const { username, password } = this.form;
|
|
|
|
this.authService.login(username, password).subscribe(
|
|
data => {
|
|
this.tokenStorage.saveToken(data.accessToken);
|
|
this.tokenStorage.saveUser(data);
|
|
|
|
this.isLoginFailed = false;
|
|
this.isLoggedIn = true;
|
|
this.roles = this.tokenStorage.getUser().roles;
|
|
this.reloadPage();
|
|
},
|
|
err => {
|
|
this.errorMessage = err.error.message;
|
|
this.isLoginFailed = true;
|
|
}
|
|
);
|
|
}
|
|
|
|
reloadPage(): void {
|
|
window.location.reload();
|
|
}
|
|
}
|