token-storage.service.ts 1.3 KB

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