token-storage.service.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { Injectable } from '@angular/core';
  2. const ID_KEY = 'AuthId';
  3. const TOKEN_KEY = 'AuthToken';
  4. const USERNAME_KEY = 'AuthUsername';
  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 saveAuthorities(authorities: string[]) {
  30. window.sessionStorage.removeItem(AUTHORITIES_KEY);
  31. window.sessionStorage.setItem(AUTHORITIES_KEY, JSON.stringify(authorities));
  32. }
  33. public getAuthorities(): string[] {
  34. this.roles = [];
  35. if (sessionStorage.getItem(TOKEN_KEY)) {
  36. JSON.parse(sessionStorage.getItem(AUTHORITIES_KEY) || '{}').forEach((authority: { authority: string; }) => {
  37. this.roles.push(authority.authority);
  38. });
  39. }
  40. return this.roles;
  41. }
  42. }