1 // Do not use the barrel (dependency loop)
2 import { User } from '../../shared/users/user.model';
4 export class AuthUser extends User {
5 private static KEYS = {
14 const usernameLocalStorage = localStorage.getItem(this.KEYS.USERNAME);
15 if (usernameLocalStorage) {
18 id: parseInt(localStorage.getItem(this.KEYS.ID)),
19 username: localStorage.getItem(this.KEYS.USERNAME),
20 role: localStorage.getItem(this.KEYS.ROLE)
30 localStorage.removeItem(this.KEYS.USERNAME);
31 localStorage.removeItem(this.KEYS.ID);
32 localStorage.removeItem(this.KEYS.ROLE);
36 constructor(userHash: { id: number, username: string, role: string }, hashTokens: any) {
38 this.tokens = new Tokens(hashTokens);
42 return this.tokens.access_token;
46 return this.tokens.refresh_token;
50 return this.tokens.token_type;
53 refreshTokens(access_token: string, refresh_token: string) {
54 this.tokens.access_token = access_token;
55 this.tokens.refresh_token = refresh_token;
59 localStorage.setItem(AuthUser.KEYS.ID, this.id.toString());
60 localStorage.setItem(AuthUser.KEYS.USERNAME, this.username);
61 localStorage.setItem(AuthUser.KEYS.ROLE, this.role);
66 // Private class only used by User
68 private static KEYS = {
69 ACCESS_TOKEN: 'access_token',
70 REFRESH_TOKEN: 'refresh_token',
71 TOKEN_TYPE: 'token_type',
75 refresh_token: string;
79 const accessTokenLocalStorage = localStorage.getItem(this.KEYS.ACCESS_TOKEN);
80 const refreshTokenLocalStorage = localStorage.getItem(this.KEYS.REFRESH_TOKEN);
81 const tokenTypeLocalStorage = localStorage.getItem(this.KEYS.TOKEN_TYPE);
83 if (accessTokenLocalStorage && refreshTokenLocalStorage && tokenTypeLocalStorage) {
85 access_token: accessTokenLocalStorage,
86 refresh_token: refreshTokenLocalStorage,
87 token_type: tokenTypeLocalStorage
95 localStorage.removeItem(this.KEYS.ACCESS_TOKEN);
96 localStorage.removeItem(this.KEYS.REFRESH_TOKEN);
97 localStorage.removeItem(this.KEYS.TOKEN_TYPE);
100 constructor(hash?: any) {
102 this.access_token = hash.access_token;
103 this.refresh_token = hash.refresh_token;
105 if (hash.token_type === 'bearer') {
106 this.token_type = 'Bearer';
108 this.token_type = hash.token_type;
114 localStorage.setItem('access_token', this.access_token);
115 localStorage.setItem('refresh_token', this.refresh_token);
116 localStorage.setItem('token_type', this.token_type);