| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { Component, OnInit } from '@angular/core';
- import { LoginInfo } from '../auth/login-info';
- import { AuthService } from '../auth/auth.service';
- import { TokenStorageService } from '../auth/token-storage.service';
- import { MatSnackBar } from "@angular/material/snack-bar";
- import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms";
- import { Router } from "@angular/router";
- @Component({
- selector: 'app-login',
- templateUrl: './login.component.html',
- styleUrls: ['./login.component.css']
- })
- export class LoginComponent implements OnInit {
- form: FormGroup = new FormGroup({
- email: new FormControl(''),
- password: new FormControl(''),
- });
- token?: string;
- isLoggedIn = false;
- isLoginFailed = false;
- roles: string[] = [];
- private loginInfo?: LoginInfo;
- constructor(private authService: AuthService,
- private tokenStorage: TokenStorageService,
- private _snackBar: MatSnackBar,
- private formBuilder: FormBuilder,
- private router: Router) {
- }
- ngOnInit() {
- if (this.tokenStorage.getToken() != null && this.tokenStorage.getToken() != '{}') {
- this.isLoggedIn = true;
- this.roles = this.tokenStorage.getAuthorities();
- }
- this.form = this.formBuilder.group({
- email: ['', [Validators.required, Validators.email]],
- password: ['', [Validators.required, Validators.minLength(8)]],
- })
- }
- get f(): { [key: string]: AbstractControl } {
- return this.form.controls;
- }
- onSubmit() {
- if (this.form.invalid) {
- return;
- }
- this.loginInfo = new LoginInfo(this.form.value.email, this.form.value.password);
- this.authService.attemptAuth(this.loginInfo).subscribe(
- data => {
- this.tokenStorage.saveToken(data.token || '{}');
- this.tokenStorage.saveUsername(data.username || '{}');
- this.tokenStorage.saveAuthorities(data.authorities || []);
- this.tokenStorage.saveUserID(data.userID || '{}');
- this.isLoginFailed = false;
- this.isLoggedIn = true;
- this.token = this.tokenStorage.getToken();
- this.roles = this.tokenStorage.getAuthorities();
- this.router.navigate(['/home']).then(() => {
- });
- },
- error => {
- this._snackBar.open(error.error?.message || 'Oops! Error occurred', 'Dismiss');
- this.isLoginFailed = true;
- }
- );
- }
- }
|