diff options
author | Chocobozzz <me@florianbigard.com> | 2020-08-14 16:53:50 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2020-08-14 17:31:34 +0200 |
commit | 496d784d0534cb09b97909d37b0e400d81a9078a (patch) | |
tree | e4cdb8e883c0ce5ac8bf2e29093a26e0b73d2876 /client | |
parent | b4c3c51dc874711febf43b719ca878436b31084d (diff) | |
download | PeerTube-496d784d0534cb09b97909d37b0e400d81a9078a.tar.gz PeerTube-496d784d0534cb09b97909d37b0e400d81a9078a.tar.zst PeerTube-496d784d0534cb09b97909d37b0e400d81a9078a.zip |
Fix invalid refresh token in embed
Diffstat (limited to 'client')
-rw-r--r-- | client/src/standalone/videos/embed.ts | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index 1dca84f72..adba32a31 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts | |||
@@ -79,9 +79,6 @@ export class PeerTubeEmbed { | |||
79 | .then((res: Response) => { | 79 | .then((res: Response) => { |
80 | if (res.status !== 401) return res | 80 | if (res.status !== 401) return res |
81 | 81 | ||
82 | // 401 unauthorized is not catch-ed, but then-ed | ||
83 | const error = res | ||
84 | |||
85 | const refreshingTokenPromise = new Promise((resolve, reject) => { | 82 | const refreshingTokenPromise = new Promise((resolve, reject) => { |
86 | const clientId: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_ID) | 83 | const clientId: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_ID) |
87 | const clientSecret: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_SECRET) | 84 | const clientSecret: string = peertubeLocalStorage.getItem(this.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_SECRET) |
@@ -101,24 +98,37 @@ export class PeerTubeEmbed { | |||
101 | headers, | 98 | headers, |
102 | method: 'POST', | 99 | method: 'POST', |
103 | body: objectToUrlEncoded(data) | 100 | body: objectToUrlEncoded(data) |
104 | }).then(res => res.json()) | 101 | }).then(res => { |
105 | .then((obj: UserRefreshToken) => { | 102 | if (res.status === 401) return undefined |
106 | this.userTokens.accessToken = obj.access_token | ||
107 | this.userTokens.refreshToken = obj.refresh_token | ||
108 | this.userTokens.save() | ||
109 | 103 | ||
110 | this.setHeadersFromTokens() | 104 | return res.json() |
105 | }).then((obj: UserRefreshToken & { code: 'invalid_grant'}) => { | ||
106 | if (!obj || obj.code === 'invalid_grant') { | ||
107 | Tokens.flush() | ||
108 | this.removeTokensFromHeaders() | ||
111 | 109 | ||
112 | resolve() | 110 | return resolve() |
113 | }) | 111 | } |
112 | |||
113 | this.userTokens.accessToken = obj.access_token | ||
114 | this.userTokens.refreshToken = obj.refresh_token | ||
115 | this.userTokens.save() | ||
116 | |||
117 | this.setHeadersFromTokens() | ||
118 | |||
119 | resolve() | ||
120 | }) | ||
114 | .catch((refreshTokenError: any) => { | 121 | .catch((refreshTokenError: any) => { |
115 | reject(refreshTokenError) | 122 | reject(refreshTokenError) |
116 | }) | 123 | }) |
117 | }) | 124 | }) |
118 | 125 | ||
119 | return refreshingTokenPromise | 126 | return refreshingTokenPromise |
120 | .catch(() => this.removeTokensFromHeaders()) | 127 | .catch(() => { |
121 | .then(() => fetch(url, { | 128 | Tokens.flush() |
129 | |||
130 | this.removeTokensFromHeaders() | ||
131 | }).then(() => fetch(url, { | ||
122 | ...options, | 132 | ...options, |
123 | headers: this.headers | 133 | headers: this.headers |
124 | })) | 134 | })) |