]>
Commit | Line | Data |
---|---|---|
a4ff3100 C |
1 | import { peertubeLocalStorage } from '../peertube-web-storage' |
2 | ||
3 | export type TokenOptions = { | |
4 | accessToken: string | |
5 | refreshToken: string | |
6 | tokenType: string | |
7 | } | |
8 | ||
9 | // Private class only used by User | |
10 | export class Tokens { | |
11 | private static KEYS = { | |
12 | ACCESS_TOKEN: 'access_token', | |
13 | REFRESH_TOKEN: 'refresh_token', | |
14 | TOKEN_TYPE: 'token_type' | |
15 | } | |
16 | ||
17 | accessToken: string | |
18 | refreshToken: string | |
19 | tokenType: string | |
20 | ||
21 | static load () { | |
22 | const accessTokenLocalStorage = peertubeLocalStorage.getItem(this.KEYS.ACCESS_TOKEN) | |
23 | const refreshTokenLocalStorage = peertubeLocalStorage.getItem(this.KEYS.REFRESH_TOKEN) | |
24 | const tokenTypeLocalStorage = peertubeLocalStorage.getItem(this.KEYS.TOKEN_TYPE) | |
25 | ||
26 | if (accessTokenLocalStorage && refreshTokenLocalStorage && tokenTypeLocalStorage) { | |
27 | return new Tokens({ | |
28 | accessToken: accessTokenLocalStorage, | |
29 | refreshToken: refreshTokenLocalStorage, | |
30 | tokenType: tokenTypeLocalStorage | |
31 | }) | |
32 | } | |
33 | ||
34 | return null | |
35 | } | |
36 | ||
37 | static flush () { | |
38 | peertubeLocalStorage.removeItem(this.KEYS.ACCESS_TOKEN) | |
39 | peertubeLocalStorage.removeItem(this.KEYS.REFRESH_TOKEN) | |
40 | peertubeLocalStorage.removeItem(this.KEYS.TOKEN_TYPE) | |
41 | } | |
42 | ||
43 | constructor (hash?: TokenOptions) { | |
44 | if (hash) { | |
45 | this.accessToken = hash.accessToken | |
46 | this.refreshToken = hash.refreshToken | |
47 | ||
48 | if (hash.tokenType === 'bearer') { | |
49 | this.tokenType = 'Bearer' | |
50 | } else { | |
51 | this.tokenType = hash.tokenType | |
52 | } | |
53 | } | |
54 | } | |
55 | ||
56 | save () { | |
57 | peertubeLocalStorage.setItem(Tokens.KEYS.ACCESS_TOKEN, this.accessToken) | |
58 | peertubeLocalStorage.setItem(Tokens.KEYS.REFRESH_TOKEN, this.refreshToken) | |
59 | peertubeLocalStorage.setItem(Tokens.KEYS.TOKEN_TYPE, this.tokenType) | |
60 | } | |
61 | } |