token-storage.service.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { Injectable } from '@angular/core';
  2. const TOKEN_KEY = 'AuthToken';
  3. const USERNAME_KEY = 'AuthUsername';
  4. const EMAIL_KEY = 'AuthEmail';
  5. const AUTHORITIES_KEY = 'AuthAuthorities';
  6. @Injectable({
  7. providedIn: 'root'
  8. })
  9. export class TokenStorageService {
  10. private roles: Array<string> = [];
  11. constructor() { }
  12. signOut() {
  13. window.sessionStorage.clear();
  14. }
  15. public saveToken(token: string) {
  16. window.sessionStorage.removeItem(TOKEN_KEY);
  17. window.sessionStorage.setItem(TOKEN_KEY, token);
  18. }
  19. public getToken(): string {
  20. return sessionStorage.getItem(TOKEN_KEY) || '{}';
  21. }
  22. public saveUsername(username: string) {
  23. window.sessionStorage.removeItem(USERNAME_KEY);
  24. window.sessionStorage.setItem(USERNAME_KEY, username);
  25. }
  26. public getUsername(): string {
  27. return sessionStorage.getItem(USERNAME_KEY) || '{}';
  28. }
  29. public saveEmail(email: string) {
  30. window.sessionStorage.removeItem(EMAIL_KEY);
  31. window.sessionStorage.setItem(EMAIL_KEY, email);
  32. }
  33. public getEmail(): string {
  34. return sessionStorage.getItem(EMAIL_KEY) || '{}';
  35. }
  36. public saveAuthorities(authorities: string[]) {
  37. window.sessionStorage.removeItem(AUTHORITIES_KEY);
  38. window.sessionStorage.setItem(AUTHORITIES_KEY, JSON.stringify(authorities));
  39. }
  40. public getAuthorities(): string[] {
  41. this.roles = [];
  42. if (sessionStorage.getItem(TOKEN_KEY)) {
  43. JSON.parse(sessionStorage.getItem(AUTHORITIES_KEY) || '{}').forEach((authority: { authority: string; }) => {
  44. this.roles.push(authority.authority);
  45. });
  46. }
  47. return this.roles;
  48. }
  49. }