login.component.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { Component, OnInit } from '@angular/core';
  2. import { LoginInfo } from '../auth/login-info';
  3. import { AuthService } from '../auth/auth.service';
  4. import { TokenStorageService } from '../auth/token-storage.service';
  5. import { MatSnackBar } from "@angular/material/snack-bar";
  6. import { AbstractControl, FormBuilder, FormControl, FormGroup, Validators } from "@angular/forms";
  7. import { Router } from "@angular/router";
  8. @Component({
  9. selector: 'app-login',
  10. templateUrl: './login.component.html',
  11. styleUrls: ['./login.component.css']
  12. })
  13. export class LoginComponent implements OnInit {
  14. form: FormGroup = new FormGroup({
  15. email: new FormControl(''),
  16. password: new FormControl(''),
  17. });
  18. token?: string;
  19. isLoggedIn = false;
  20. isLoginFailed = false;
  21. roles: string[] = [];
  22. private loginInfo?: LoginInfo;
  23. constructor(private authService: AuthService,
  24. private tokenStorage: TokenStorageService,
  25. private _snackBar: MatSnackBar,
  26. private formBuilder: FormBuilder,
  27. private router: Router) {
  28. }
  29. ngOnInit() {
  30. if (this.tokenStorage.getToken() != null && this.tokenStorage.getToken() != '{}') {
  31. this.isLoggedIn = true;
  32. this.roles = this.tokenStorage.getAuthorities();
  33. }
  34. this.form = this.formBuilder.group({
  35. email: ['', [Validators.required, Validators.email]],
  36. password: ['', [Validators.required, Validators.minLength(8)]],
  37. })
  38. }
  39. get f(): { [key: string]: AbstractControl } {
  40. return this.form.controls;
  41. }
  42. onSubmit() {
  43. if (this.form.invalid) {
  44. return;
  45. }
  46. this.loginInfo = new LoginInfo(this.form.value.email, this.form.value.password);
  47. this.authService.attemptAuth(this.loginInfo).subscribe(
  48. data => {
  49. this.tokenStorage.saveToken(data.token || '{}');
  50. this.tokenStorage.saveUsername(data.username || '{}');
  51. this.tokenStorage.saveAuthorities(data.authorities || []);
  52. this.tokenStorage.saveUserID(data.userID || '{}');
  53. this.isLoginFailed = false;
  54. this.isLoggedIn = true;
  55. this.token = this.tokenStorage.getToken();
  56. this.roles = this.tokenStorage.getAuthorities();
  57. this.router.navigate(['/home']).then(() => {
  58. });
  59. },
  60. error => {
  61. this._snackBar.open(error.error?.message || 'Oops! Error occurred', 'Dismiss');
  62. this.isLoginFailed = true;
  63. }
  64. );
  65. }
  66. }