aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/standalone/videos/shared/auth-http.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/standalone/videos/shared/auth-http.ts')
-rw-r--r--client/src/standalone/videos/shared/auth-http.ts30
1 files changed, 16 insertions, 14 deletions
diff --git a/client/src/standalone/videos/shared/auth-http.ts b/client/src/standalone/videos/shared/auth-http.ts
index 0356ab8a6..95e3b029e 100644
--- a/client/src/standalone/videos/shared/auth-http.ts
+++ b/client/src/standalone/videos/shared/auth-http.ts
@@ -1,5 +1,5 @@
1import { HttpStatusCode, OAuth2ErrorCode, UserRefreshToken } from '../../../../../shared/models' 1import { HttpStatusCode, OAuth2ErrorCode, UserRefreshToken } from '../../../../../shared/models'
2import { objectToUrlEncoded, UserTokens } from '../../../root-helpers' 2import { OAuthUserTokens, objectToUrlEncoded } from '../../../root-helpers'
3import { peertubeLocalStorage } from '../../../root-helpers/peertube-web-storage' 3import { peertubeLocalStorage } from '../../../root-helpers/peertube-web-storage'
4 4
5export class AuthHTTP { 5export class AuthHTTP {
@@ -8,30 +8,32 @@ export class AuthHTTP {
8 CLIENT_SECRET: 'client_secret' 8 CLIENT_SECRET: 'client_secret'
9 } 9 }
10 10
11 private userTokens: UserTokens 11 private userOAuthTokens: OAuthUserTokens
12 12
13 private headers = new Headers() 13 private headers = new Headers()
14 14
15 constructor () { 15 constructor () {
16 this.userTokens = UserTokens.getUserTokens(peertubeLocalStorage) 16 this.userOAuthTokens = OAuthUserTokens.getUserTokens(peertubeLocalStorage)
17 17
18 if (this.userTokens) this.setHeadersFromTokens() 18 if (this.userOAuthTokens) this.setHeadersFromTokens()
19 } 19 }
20 20
21 fetch (url: string, { optionalAuth }: { optionalAuth: boolean }) { 21 fetch (url: string, { optionalAuth, method }: { optionalAuth: boolean, method?: string }) {
22 const refreshFetchOptions = optionalAuth 22 const refreshFetchOptions = optionalAuth
23 ? { headers: this.headers } 23 ? { headers: this.headers }
24 : {} 24 : {}
25 25
26 return this.refreshFetch(url.toString(), refreshFetchOptions) 26 return this.refreshFetch(url.toString(), { ...refreshFetchOptions, method })
27 } 27 }
28 28
29 getHeaderTokenValue () { 29 getHeaderTokenValue () {
30 return `${this.userTokens.tokenType} ${this.userTokens.accessToken}` 30 if (!this.userOAuthTokens) return null
31
32 return `${this.userOAuthTokens.tokenType} ${this.userOAuthTokens.accessToken}`
31 } 33 }
32 34
33 isLoggedIn () { 35 isLoggedIn () {
34 return !!this.userTokens 36 return !!this.userOAuthTokens
35 } 37 }
36 38
37 private refreshFetch (url: string, options?: RequestInit) { 39 private refreshFetch (url: string, options?: RequestInit) {
@@ -47,7 +49,7 @@ export class AuthHTTP {
47 headers.set('Content-Type', 'application/x-www-form-urlencoded') 49 headers.set('Content-Type', 'application/x-www-form-urlencoded')
48 50
49 const data = { 51 const data = {
50 refresh_token: this.userTokens.refreshToken, 52 refresh_token: this.userOAuthTokens.refreshToken,
51 client_id: clientId, 53 client_id: clientId,
52 client_secret: clientSecret, 54 client_secret: clientSecret,
53 response_type: 'code', 55 response_type: 'code',
@@ -64,15 +66,15 @@ export class AuthHTTP {
64 return res.json() 66 return res.json()
65 }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCode }) => { 67 }).then((obj: UserRefreshToken & { code?: OAuth2ErrorCode }) => {
66 if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) { 68 if (!obj || obj.code === OAuth2ErrorCode.INVALID_GRANT) {
67 UserTokens.flushLocalStorage(peertubeLocalStorage) 69 OAuthUserTokens.flushLocalStorage(peertubeLocalStorage)
68 this.removeTokensFromHeaders() 70 this.removeTokensFromHeaders()
69 71
70 return resolve() 72 return resolve()
71 } 73 }
72 74
73 this.userTokens.accessToken = obj.access_token 75 this.userOAuthTokens.accessToken = obj.access_token
74 this.userTokens.refreshToken = obj.refresh_token 76 this.userOAuthTokens.refreshToken = obj.refresh_token
75 UserTokens.saveToLocalStorage(peertubeLocalStorage, this.userTokens) 77 OAuthUserTokens.saveToLocalStorage(peertubeLocalStorage, this.userOAuthTokens)
76 78
77 this.setHeadersFromTokens() 79 this.setHeadersFromTokens()
78 80
@@ -84,7 +86,7 @@ export class AuthHTTP {
84 86
85 return refreshingTokenPromise 87 return refreshingTokenPromise
86 .catch(() => { 88 .catch(() => {
87 UserTokens.flushLocalStorage(peertubeLocalStorage) 89 OAuthUserTokens.flushLocalStorage(peertubeLocalStorage)
88 90
89 this.removeTokensFromHeaders() 91 this.removeTokensFromHeaders()
90 }).then(() => fetch(url, { 92 }).then(() => fetch(url, {