1 // Do not use the barrel (dependency loop)
2 import { UserRole } from '../../../../../shared/models/user.model'
3 import { User } from '../../shared/users/user.model';
5 export class AuthUser extends User {
6 private static KEYS = {
11 DISPLAY_NSFW: 'display_nsfw'
17 const usernameLocalStorage = localStorage.getItem(this.KEYS.USERNAME);
18 if (usernameLocalStorage) {
21 id: parseInt(localStorage.getItem(this.KEYS.ID)),
22 username: localStorage.getItem(this.KEYS.USERNAME),
23 email: localStorage.getItem(this.KEYS.EMAIL),
24 role: localStorage.getItem(this.KEYS.ROLE) as UserRole,
25 displayNSFW: localStorage.getItem(this.KEYS.DISPLAY_NSFW) === 'true'
35 localStorage.removeItem(this.KEYS.USERNAME);
36 localStorage.removeItem(this.KEYS.ID);
37 localStorage.removeItem(this.KEYS.ROLE);
38 localStorage.removeItem(this.KEYS.DISPLAY_NSFW);
42 constructor(userHash: {
50 this.tokens = new Tokens(hashTokens);
54 return this.tokens.access_token;
58 return this.tokens.refresh_token;
62 return this.tokens.token_type;
65 refreshTokens(access_token: string, refresh_token: string) {
66 this.tokens.access_token = access_token;
67 this.tokens.refresh_token = refresh_token;
71 localStorage.setItem(AuthUser.KEYS.ID, this.id.toString());
72 localStorage.setItem(AuthUser.KEYS.USERNAME, this.username);
73 localStorage.setItem(AuthUser.KEYS.ROLE, this.role);
74 localStorage.setItem(AuthUser.KEYS.DISPLAY_NSFW, JSON.stringify(this.displayNSFW));
79 // Private class only used by User
81 private static KEYS = {
82 ACCESS_TOKEN: 'access_token',
83 REFRESH_TOKEN: 'refresh_token',
84 TOKEN_TYPE: 'token_type',
88 refresh_token: string;
92 const accessTokenLocalStorage = localStorage.getItem(this.KEYS.ACCESS_TOKEN);
93 const refreshTokenLocalStorage = localStorage.getItem(this.KEYS.REFRESH_TOKEN);
94 const tokenTypeLocalStorage = localStorage.getItem(this.KEYS.TOKEN_TYPE);
96 if (accessTokenLocalStorage && refreshTokenLocalStorage && tokenTypeLocalStorage) {
98 access_token: accessTokenLocalStorage,
99 refresh_token: refreshTokenLocalStorage,
100 token_type: tokenTypeLocalStorage
108 localStorage.removeItem(this.KEYS.ACCESS_TOKEN);
109 localStorage.removeItem(this.KEYS.REFRESH_TOKEN);
110 localStorage.removeItem(this.KEYS.TOKEN_TYPE);
113 constructor(hash?: any) {
115 this.access_token = hash.access_token;
116 this.refresh_token = hash.refresh_token;
118 if (hash.token_type === 'bearer') {
119 this.token_type = 'Bearer';
121 this.token_type = hash.token_type;
127 localStorage.setItem('access_token', this.access_token);
128 localStorage.setItem('refresh_token', this.refresh_token);
129 localStorage.setItem('token_type', this.token_type);