aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/root-helpers/users/oauth-user-tokens.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/root-helpers/users/oauth-user-tokens.ts')
-rw-r--r--client/src/root-helpers/users/oauth-user-tokens.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/client/src/root-helpers/users/oauth-user-tokens.ts b/client/src/root-helpers/users/oauth-user-tokens.ts
new file mode 100644
index 000000000..a24e76b91
--- /dev/null
+++ b/client/src/root-helpers/users/oauth-user-tokens.ts
@@ -0,0 +1,46 @@
1import { UserTokenLocalStorageKeys } from './user-local-storage-keys'
2
3export class OAuthUserTokens {
4 accessToken: string
5 refreshToken: string
6 tokenType: string
7
8 constructor (hash?: Partial<OAuthUserTokens>) {
9 if (hash) {
10 this.accessToken = hash.accessToken
11 this.refreshToken = hash.refreshToken
12
13 if (hash.tokenType === 'bearer') {
14 this.tokenType = 'Bearer'
15 } else {
16 this.tokenType = hash.tokenType
17 }
18 }
19 }
20
21 static getUserTokens (localStorage: Pick<Storage, 'getItem'>) {
22 const accessTokenLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.ACCESS_TOKEN)
23 const refreshTokenLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.REFRESH_TOKEN)
24 const tokenTypeLocalStorage = localStorage.getItem(UserTokenLocalStorageKeys.TOKEN_TYPE)
25
26 if (!accessTokenLocalStorage || !refreshTokenLocalStorage || !tokenTypeLocalStorage) return null
27
28 return new OAuthUserTokens({
29 accessToken: accessTokenLocalStorage,
30 refreshToken: refreshTokenLocalStorage,
31 tokenType: tokenTypeLocalStorage
32 })
33 }
34
35 static saveToLocalStorage (localStorage: Pick<Storage, 'setItem'>, tokens: OAuthUserTokens) {
36 localStorage.setItem(UserTokenLocalStorageKeys.ACCESS_TOKEN, tokens.accessToken)
37 localStorage.setItem(UserTokenLocalStorageKeys.REFRESH_TOKEN, tokens.refreshToken)
38 localStorage.setItem(UserTokenLocalStorageKeys.TOKEN_TYPE, tokens.tokenType)
39 }
40
41 static flushLocalStorage (localStorage: Pick<Storage, 'removeItem'>) {
42 localStorage.removeItem(UserTokenLocalStorageKeys.ACCESS_TOKEN)
43 localStorage.removeItem(UserTokenLocalStorageKeys.REFRESH_TOKEN)
44 localStorage.removeItem(UserTokenLocalStorageKeys.TOKEN_TYPE)
45 }
46}