@jbrowse/plugin-authentication 2.5.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DropboxOAuthModel/configSchema.d.ts +3 -14
- package/dist/DropboxOAuthModel/configSchema.js +0 -8
- package/dist/DropboxOAuthModel/configSchema.js.map +1 -1
- package/dist/DropboxOAuthModel/model.d.ts +35 -33
- package/dist/DropboxOAuthModel/model.js +26 -35
- package/dist/DropboxOAuthModel/model.js.map +1 -1
- package/dist/DropboxOAuthModel/util.d.ts +1 -0
- package/dist/DropboxOAuthModel/util.js +28 -0
- package/dist/DropboxOAuthModel/util.js.map +1 -0
- package/dist/ExternalTokenModel/ExternalTokenEntryForm.d.ts +2 -1
- package/dist/ExternalTokenModel/ExternalTokenEntryForm.js +10 -11
- package/dist/ExternalTokenModel/ExternalTokenEntryForm.js.map +1 -1
- package/dist/GoogleDriveOAuthModel/GoogleDriveFilehandle.d.ts +15 -0
- package/dist/GoogleDriveOAuthModel/GoogleDriveFilehandle.js +20 -0
- package/dist/GoogleDriveOAuthModel/GoogleDriveFilehandle.js.map +1 -0
- package/dist/GoogleDriveOAuthModel/configSchema.d.ts +0 -5
- package/dist/GoogleDriveOAuthModel/model.d.ts +36 -121
- package/dist/GoogleDriveOAuthModel/model.js +38 -51
- package/dist/GoogleDriveOAuthModel/model.js.map +1 -1
- package/dist/GoogleDriveOAuthModel/util.d.ts +1 -0
- package/dist/GoogleDriveOAuthModel/util.js +17 -0
- package/dist/GoogleDriveOAuthModel/util.js.map +1 -0
- package/dist/HTTPBasicModel/HTTPBasicLoginForm.d.ts +2 -1
- package/dist/HTTPBasicModel/HTTPBasicLoginForm.js +17 -21
- package/dist/HTTPBasicModel/HTTPBasicLoginForm.js.map +1 -1
- package/dist/HTTPBasicModel/model.d.ts +36 -4
- package/dist/HTTPBasicModel/model.js +24 -9
- package/dist/HTTPBasicModel/model.js.map +1 -1
- package/dist/OAuthModel/configSchema.d.ts +0 -8
- package/dist/OAuthModel/configSchema.js +1 -9
- package/dist/OAuthModel/configSchema.js.map +1 -1
- package/dist/OAuthModel/model.d.ts +103 -18
- package/dist/OAuthModel/model.js +165 -113
- package/dist/OAuthModel/model.js.map +1 -1
- package/dist/OAuthModel/util.d.ts +7 -0
- package/dist/OAuthModel/util.js +60 -0
- package/dist/OAuthModel/util.js.map +1 -0
- package/dist/index.d.ts +7 -433
- package/dist/util.d.ts +6 -0
- package/dist/util.js +23 -0
- package/dist/util.js.map +1 -0
- package/esm/DropboxOAuthModel/configSchema.d.ts +3 -14
- package/esm/DropboxOAuthModel/configSchema.js +0 -8
- package/esm/DropboxOAuthModel/configSchema.js.map +1 -1
- package/esm/DropboxOAuthModel/model.d.ts +35 -33
- package/esm/DropboxOAuthModel/model.js +26 -35
- package/esm/DropboxOAuthModel/model.js.map +1 -1
- package/esm/DropboxOAuthModel/util.d.ts +1 -0
- package/esm/DropboxOAuthModel/util.js +24 -0
- package/esm/DropboxOAuthModel/util.js.map +1 -0
- package/esm/ExternalTokenModel/ExternalTokenEntryForm.d.ts +2 -1
- package/esm/ExternalTokenModel/ExternalTokenEntryForm.js +10 -11
- package/esm/ExternalTokenModel/ExternalTokenEntryForm.js.map +1 -1
- package/esm/GoogleDriveOAuthModel/GoogleDriveFilehandle.d.ts +15 -0
- package/esm/GoogleDriveOAuthModel/GoogleDriveFilehandle.js +16 -0
- package/esm/GoogleDriveOAuthModel/GoogleDriveFilehandle.js.map +1 -0
- package/esm/GoogleDriveOAuthModel/configSchema.d.ts +0 -5
- package/esm/GoogleDriveOAuthModel/model.d.ts +36 -121
- package/esm/GoogleDriveOAuthModel/model.js +37 -49
- package/esm/GoogleDriveOAuthModel/model.js.map +1 -1
- package/esm/GoogleDriveOAuthModel/util.d.ts +1 -0
- package/esm/GoogleDriveOAuthModel/util.js +13 -0
- package/esm/GoogleDriveOAuthModel/util.js.map +1 -0
- package/esm/HTTPBasicModel/HTTPBasicLoginForm.d.ts +2 -1
- package/esm/HTTPBasicModel/HTTPBasicLoginForm.js +18 -22
- package/esm/HTTPBasicModel/HTTPBasicLoginForm.js.map +1 -1
- package/esm/HTTPBasicModel/model.d.ts +36 -4
- package/esm/HTTPBasicModel/model.js +24 -9
- package/esm/HTTPBasicModel/model.js.map +1 -1
- package/esm/OAuthModel/configSchema.d.ts +0 -8
- package/esm/OAuthModel/configSchema.js +1 -9
- package/esm/OAuthModel/configSchema.js.map +1 -1
- package/esm/OAuthModel/model.d.ts +103 -18
- package/esm/OAuthModel/model.js +164 -86
- package/esm/OAuthModel/model.js.map +1 -1
- package/esm/OAuthModel/util.d.ts +7 -0
- package/esm/OAuthModel/util.js +30 -0
- package/esm/OAuthModel/util.js.map +1 -0
- package/esm/index.d.ts +7 -433
- package/esm/util.d.ts +6 -0
- package/esm/util.js +18 -0
- package/esm/util.js.map +1 -0
- package/package.json +3 -4
- package/src/DropboxOAuthModel/configSchema.ts +0 -8
- package/src/DropboxOAuthModel/model.tsx +35 -54
- package/src/DropboxOAuthModel/util.ts +36 -0
- package/src/ExternalTokenModel/ExternalTokenEntryForm.tsx +39 -41
- package/src/GoogleDriveOAuthModel/GoogleDriveFilehandle.ts +38 -0
- package/src/GoogleDriveOAuthModel/model.tsx +54 -104
- package/src/GoogleDriveOAuthModel/util.ts +29 -0
- package/src/HTTPBasicModel/HTTPBasicLoginForm.tsx +53 -56
- package/src/HTTPBasicModel/model.tsx +26 -11
- package/src/OAuthModel/configSchema.ts +2 -9
- package/src/OAuthModel/model.tsx +190 -108
- package/src/OAuthModel/util.ts +33 -0
- package/src/util.ts +25 -0
package/dist/OAuthModel/model.js
CHANGED
|
@@ -1,172 +1,174 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
3
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
30
4
|
const models_1 = require("@jbrowse/core/pluggableElementTypes/models");
|
|
31
5
|
const util_1 = require("@jbrowse/core/util");
|
|
32
6
|
const mobx_state_tree_1 = require("mobx-state-tree");
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
7
|
+
const util_2 = require("./util");
|
|
8
|
+
const util_3 = require("../util");
|
|
9
|
+
/**
|
|
10
|
+
* #stateModel OAuthInternetAccount
|
|
11
|
+
*/
|
|
37
12
|
const stateModelFactory = (configSchema) => {
|
|
38
13
|
return models_1.InternetAccount.named('OAuthInternetAccount')
|
|
39
14
|
.props({
|
|
15
|
+
/**
|
|
16
|
+
* #property
|
|
17
|
+
*/
|
|
40
18
|
type: mobx_state_tree_1.types.literal('OAuthInternetAccount'),
|
|
19
|
+
/**
|
|
20
|
+
* #property
|
|
21
|
+
*/
|
|
41
22
|
configuration: (0, configuration_1.ConfigurationReference)(configSchema),
|
|
42
23
|
})
|
|
43
24
|
.views(() => {
|
|
44
25
|
let codeVerifier = undefined;
|
|
45
26
|
return {
|
|
27
|
+
/**
|
|
28
|
+
* #getter
|
|
29
|
+
*/
|
|
46
30
|
get codeVerifierPKCE() {
|
|
47
31
|
if (codeVerifier) {
|
|
48
32
|
return codeVerifier;
|
|
49
33
|
}
|
|
50
34
|
const array = new Uint8Array(32);
|
|
51
35
|
globalThis.crypto.getRandomValues(array);
|
|
52
|
-
codeVerifier = fixup(Buffer.from(array).toString('base64'));
|
|
36
|
+
codeVerifier = (0, util_2.fixup)(Buffer.from(array).toString('base64'));
|
|
53
37
|
return codeVerifier;
|
|
54
38
|
},
|
|
55
39
|
};
|
|
56
40
|
})
|
|
57
41
|
.views(self => ({
|
|
42
|
+
/**
|
|
43
|
+
* #getter
|
|
44
|
+
*/
|
|
58
45
|
get authEndpoint() {
|
|
59
46
|
return (0, configuration_1.getConf)(self, 'authEndpoint');
|
|
60
47
|
},
|
|
48
|
+
/**
|
|
49
|
+
* #getter
|
|
50
|
+
*/
|
|
61
51
|
get tokenEndpoint() {
|
|
62
52
|
return (0, configuration_1.getConf)(self, 'tokenEndpoint');
|
|
63
53
|
},
|
|
54
|
+
/**
|
|
55
|
+
* #getter
|
|
56
|
+
*/
|
|
64
57
|
get needsPKCE() {
|
|
65
58
|
return (0, configuration_1.getConf)(self, 'needsPKCE');
|
|
66
59
|
},
|
|
60
|
+
/**
|
|
61
|
+
* #getter
|
|
62
|
+
*/
|
|
67
63
|
get clientId() {
|
|
68
64
|
return (0, configuration_1.getConf)(self, 'clientId');
|
|
69
65
|
},
|
|
66
|
+
/**
|
|
67
|
+
* #getter
|
|
68
|
+
*/
|
|
70
69
|
get scopes() {
|
|
71
70
|
return (0, configuration_1.getConf)(self, 'scopes');
|
|
72
71
|
},
|
|
73
72
|
/**
|
|
74
|
-
*
|
|
73
|
+
* #method
|
|
74
|
+
* OAuth state parameter:
|
|
75
|
+
* https://www.rfc-editor.org/rfc/rfc6749#section-4.1.1
|
|
76
|
+
*
|
|
75
77
|
* Can override or extend if dynamic state is needed.
|
|
76
78
|
*/
|
|
77
79
|
state() {
|
|
78
|
-
return (0, configuration_1.getConf)(self, 'state')
|
|
80
|
+
return (0, configuration_1.getConf)(self, 'state');
|
|
79
81
|
},
|
|
82
|
+
/**
|
|
83
|
+
* #getter
|
|
84
|
+
*/
|
|
80
85
|
get responseType() {
|
|
81
86
|
return (0, configuration_1.getConf)(self, 'responseType');
|
|
82
87
|
},
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
/**
|
|
89
|
+
* #getter
|
|
90
|
+
*/
|
|
86
91
|
get refreshTokenKey() {
|
|
87
92
|
return `${self.internetAccountId}-refreshToken`;
|
|
88
93
|
},
|
|
89
94
|
}))
|
|
90
95
|
.actions(self => ({
|
|
96
|
+
/**
|
|
97
|
+
* #action
|
|
98
|
+
*/
|
|
91
99
|
storeRefreshToken(refreshToken) {
|
|
92
100
|
localStorage.setItem(self.refreshTokenKey, refreshToken);
|
|
93
101
|
},
|
|
102
|
+
/**
|
|
103
|
+
* #action
|
|
104
|
+
*/
|
|
94
105
|
removeRefreshToken() {
|
|
95
106
|
localStorage.removeItem(self.refreshTokenKey);
|
|
96
107
|
},
|
|
108
|
+
/**
|
|
109
|
+
* #method
|
|
110
|
+
*/
|
|
97
111
|
retrieveRefreshToken() {
|
|
98
112
|
return localStorage.getItem(self.refreshTokenKey);
|
|
99
113
|
},
|
|
114
|
+
/**
|
|
115
|
+
* #action
|
|
116
|
+
*/
|
|
100
117
|
async exchangeAuthorizationForAccessToken(token, redirectUri) {
|
|
101
|
-
const
|
|
118
|
+
const params = new URLSearchParams(Object.entries({
|
|
102
119
|
code: token,
|
|
103
120
|
grant_type: 'authorization_code',
|
|
104
121
|
client_id: self.clientId,
|
|
105
|
-
code_verifier: self.codeVerifierPKCE,
|
|
106
122
|
redirect_uri: redirectUri,
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
...(self.needsPKCE ? { code_verifier: self.codeVerifierPKCE } : {}),
|
|
124
|
+
}));
|
|
109
125
|
const response = await fetch(self.tokenEndpoint, {
|
|
110
126
|
method: 'POST',
|
|
111
127
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
112
128
|
body: params.toString(),
|
|
113
129
|
});
|
|
114
130
|
if (!response.ok) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
errorMessage = '';
|
|
121
|
-
}
|
|
122
|
-
throw new Error(`Failed to obtain token from endpoint: ${response.status} (${response.statusText})${errorMessage ? ` (${errorMessage})` : ''}`);
|
|
131
|
+
throw new Error(await (0, util_3.getResponseError)({
|
|
132
|
+
response,
|
|
133
|
+
reason: 'Failed to obtain token',
|
|
134
|
+
}));
|
|
123
135
|
}
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
this.storeRefreshToken(accessToken.refresh_token);
|
|
127
|
-
}
|
|
128
|
-
return accessToken.access_token;
|
|
136
|
+
const data = await response.json();
|
|
137
|
+
return (0, util_2.processTokenResponse)(data, token => this.storeRefreshToken(token));
|
|
129
138
|
},
|
|
139
|
+
/**
|
|
140
|
+
* #action
|
|
141
|
+
*/
|
|
130
142
|
async exchangeRefreshForAccessToken(refreshToken) {
|
|
131
|
-
var _a;
|
|
132
|
-
const data = {
|
|
133
|
-
grant_type: 'refresh_token',
|
|
134
|
-
refresh_token: refreshToken,
|
|
135
|
-
client_id: self.clientId,
|
|
136
|
-
};
|
|
137
|
-
const params = new URLSearchParams(Object.entries(data));
|
|
138
143
|
const response = await fetch(self.tokenEndpoint, {
|
|
139
144
|
method: 'POST',
|
|
140
145
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
141
|
-
body:
|
|
146
|
+
body: new URLSearchParams(Object.entries({
|
|
147
|
+
grant_type: 'refresh_token',
|
|
148
|
+
refresh_token: refreshToken,
|
|
149
|
+
client_id: self.clientId,
|
|
150
|
+
})).toString(),
|
|
142
151
|
});
|
|
143
152
|
if (!response.ok) {
|
|
144
153
|
self.removeToken();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
text = (_a = obj === null || obj === void 0 ? void 0 : obj.error_description) !== null && _a !== void 0 ? _a : text;
|
|
152
|
-
}
|
|
153
|
-
catch (e) {
|
|
154
|
-
/* just use original text as error */
|
|
155
|
-
}
|
|
156
|
-
throw new Error(`Network response failure — ${response.status} (${response.statusText}) ${text ? ` (${text})` : ''}`);
|
|
154
|
+
const text = await response.text();
|
|
155
|
+
throw new Error(await (0, util_3.getResponseError)({
|
|
156
|
+
response,
|
|
157
|
+
statusText: (0, util_2.processError)(text, () => this.removeRefreshToken()),
|
|
158
|
+
}));
|
|
157
159
|
}
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
this.storeRefreshToken(accessToken.refresh_token);
|
|
161
|
-
}
|
|
162
|
-
return accessToken.access_token;
|
|
160
|
+
const data = await response.json();
|
|
161
|
+
return (0, util_2.processTokenResponse)(data, token => this.storeRefreshToken(token));
|
|
163
162
|
},
|
|
164
163
|
}))
|
|
165
164
|
.actions(self => {
|
|
166
165
|
let listener;
|
|
167
|
-
let
|
|
166
|
+
let exchangedTokenPromise = undefined;
|
|
168
167
|
return {
|
|
169
|
-
|
|
168
|
+
/**
|
|
169
|
+
* #action
|
|
170
|
+
* used to listen to child window for auth code/token
|
|
171
|
+
*/
|
|
170
172
|
addMessageChannel(resolve, reject) {
|
|
171
173
|
listener = event => {
|
|
172
174
|
// this should probably get better handling, but ignored for now
|
|
@@ -175,9 +177,15 @@ const stateModelFactory = (configSchema) => {
|
|
|
175
177
|
};
|
|
176
178
|
window.addEventListener('message', listener);
|
|
177
179
|
},
|
|
180
|
+
/**
|
|
181
|
+
* #action
|
|
182
|
+
*/
|
|
178
183
|
deleteMessageChannel() {
|
|
179
184
|
window.removeEventListener('message', listener);
|
|
180
185
|
},
|
|
186
|
+
/**
|
|
187
|
+
* #action
|
|
188
|
+
*/
|
|
181
189
|
async finishOAuthWindow(event, resolve, reject) {
|
|
182
190
|
if (event.data.name !== `JBrowseAuthWindow-${self.internetAccountId}`) {
|
|
183
191
|
return this.deleteMessageChannel();
|
|
@@ -205,21 +213,25 @@ const stateModelFactory = (configSchema) => {
|
|
|
205
213
|
self.storeToken(token);
|
|
206
214
|
return resolve(token);
|
|
207
215
|
}
|
|
208
|
-
catch (
|
|
209
|
-
return
|
|
210
|
-
? reject(
|
|
211
|
-
: reject(new Error(String(
|
|
216
|
+
catch (e) {
|
|
217
|
+
return e instanceof Error
|
|
218
|
+
? reject(e)
|
|
219
|
+
: reject(new Error(String(e)));
|
|
212
220
|
}
|
|
213
221
|
}
|
|
214
222
|
if (redirectUriWithInfo.includes('access_denied')) {
|
|
215
223
|
return reject(new Error('OAuth flow was cancelled'));
|
|
216
224
|
}
|
|
217
225
|
if (redirectUriWithInfo.includes('error')) {
|
|
218
|
-
return reject(new Error('
|
|
226
|
+
return reject(new Error('OAuth flow error: ' + queryStringSearch));
|
|
219
227
|
}
|
|
220
228
|
this.deleteMessageChannel();
|
|
221
229
|
},
|
|
222
|
-
|
|
230
|
+
/**
|
|
231
|
+
* #action
|
|
232
|
+
* opens external OAuth flow, popup for web and new browser window for
|
|
233
|
+
* desktop
|
|
234
|
+
*/
|
|
223
235
|
async useEndpointForAuthorization(resolve, reject) {
|
|
224
236
|
const redirectUri = util_1.isElectron
|
|
225
237
|
? 'http://localhost/auth'
|
|
@@ -228,6 +240,7 @@ const stateModelFactory = (configSchema) => {
|
|
|
228
240
|
client_id: self.clientId,
|
|
229
241
|
redirect_uri: redirectUri,
|
|
230
242
|
response_type: self.responseType || 'code',
|
|
243
|
+
token_access_type: 'offline',
|
|
231
244
|
};
|
|
232
245
|
if (self.state()) {
|
|
233
246
|
data.state = self.state();
|
|
@@ -236,16 +249,9 @@ const stateModelFactory = (configSchema) => {
|
|
|
236
249
|
data.scope = self.scopes;
|
|
237
250
|
}
|
|
238
251
|
if (self.needsPKCE) {
|
|
239
|
-
|
|
240
|
-
const sha256 = await Promise.resolve().then(() => __importStar(require('crypto-js/sha256'))).then(f => f.default);
|
|
241
|
-
const Base64 = await Promise.resolve().then(() => __importStar(require('crypto-js/enc-base64')));
|
|
242
|
-
const codeChallenge = fixup(Base64.stringify(sha256(codeVerifierPKCE)));
|
|
243
|
-
data.code_challenge = codeChallenge;
|
|
252
|
+
data.code_challenge = await (0, util_2.generateChallenge)(self.codeVerifierPKCE);
|
|
244
253
|
data.code_challenge_method = 'S256';
|
|
245
254
|
}
|
|
246
|
-
if (self.hasRefreshToken) {
|
|
247
|
-
data.token_access_type = 'offline';
|
|
248
|
-
}
|
|
249
255
|
const params = new URLSearchParams(Object.entries(data));
|
|
250
256
|
const url = new URL(self.authEndpoint);
|
|
251
257
|
url.search = params.toString();
|
|
@@ -265,44 +271,90 @@ const stateModelFactory = (configSchema) => {
|
|
|
265
271
|
this.finishOAuthWindow(eventFromDesktop, resolve, reject);
|
|
266
272
|
}
|
|
267
273
|
else {
|
|
268
|
-
|
|
269
|
-
window.open(url, eventName, options);
|
|
274
|
+
window.open(url, eventName, `width=500,height=600,left=0,top=0`);
|
|
270
275
|
}
|
|
271
276
|
},
|
|
277
|
+
/**
|
|
278
|
+
* #action
|
|
279
|
+
*/
|
|
272
280
|
async getTokenFromUser(resolve, reject) {
|
|
273
|
-
const refreshToken = self.
|
|
281
|
+
const refreshToken = self.retrieveRefreshToken();
|
|
282
|
+
let doUserFlow = true;
|
|
283
|
+
// if there is a refresh token, then try it out, and only if that
|
|
284
|
+
// refresh token succeeds, set doUserFlow to false
|
|
274
285
|
if (refreshToken) {
|
|
275
|
-
|
|
286
|
+
try {
|
|
287
|
+
const token = await self.exchangeRefreshForAccessToken(refreshToken);
|
|
288
|
+
resolve(token);
|
|
289
|
+
doUserFlow = false;
|
|
290
|
+
}
|
|
291
|
+
catch (e) {
|
|
292
|
+
console.error(e);
|
|
293
|
+
self.removeRefreshToken();
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (doUserFlow) {
|
|
297
|
+
this.addMessageChannel(resolve, reject);
|
|
298
|
+
// may want to improve handling
|
|
299
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
300
|
+
this.useEndpointForAuthorization(resolve, reject);
|
|
276
301
|
}
|
|
277
|
-
this.addMessageChannel(resolve, reject);
|
|
278
|
-
// may want to improve handling
|
|
279
|
-
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
280
|
-
this.useEndpointForAuthorization(resolve, reject);
|
|
281
302
|
},
|
|
303
|
+
/**
|
|
304
|
+
* #action
|
|
305
|
+
*/
|
|
282
306
|
async validateToken(token, location) {
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
|
|
307
|
+
const newInit = self.addAuthHeaderToInit({ method: 'HEAD' }, token);
|
|
308
|
+
const response = await fetch(location.uri, newInit);
|
|
309
|
+
if (!response.ok) {
|
|
310
|
+
self.removeToken();
|
|
311
|
+
const refreshToken = self.retrieveRefreshToken();
|
|
286
312
|
if (refreshToken) {
|
|
287
313
|
try {
|
|
288
|
-
if (!
|
|
289
|
-
|
|
314
|
+
if (!exchangedTokenPromise) {
|
|
315
|
+
exchangedTokenPromise =
|
|
290
316
|
self.exchangeRefreshForAccessToken(refreshToken);
|
|
291
317
|
}
|
|
292
|
-
const newToken = await
|
|
293
|
-
|
|
318
|
+
const newToken = await exchangedTokenPromise;
|
|
319
|
+
exchangedTokenPromise = undefined;
|
|
320
|
+
return newToken;
|
|
294
321
|
}
|
|
295
322
|
catch (err) {
|
|
296
|
-
|
|
323
|
+
console.error('Token could not be refreshed', err);
|
|
324
|
+
// let original error be thrown
|
|
297
325
|
}
|
|
298
326
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
327
|
+
throw new Error(await (0, util_3.getResponseError)({
|
|
328
|
+
response,
|
|
329
|
+
reason: 'Error validating token',
|
|
330
|
+
}));
|
|
302
331
|
}
|
|
303
332
|
return token;
|
|
304
333
|
},
|
|
305
334
|
};
|
|
335
|
+
})
|
|
336
|
+
.actions(self => {
|
|
337
|
+
const superGetFetcher = self.getFetcher;
|
|
338
|
+
return {
|
|
339
|
+
/**
|
|
340
|
+
* #action
|
|
341
|
+
* Get a fetch method that will add any needed authentication headers to
|
|
342
|
+
* the request before sending it. If location is provided, it will be
|
|
343
|
+
* checked to see if it includes a token in it's pre-auth information.
|
|
344
|
+
*
|
|
345
|
+
* @param loc - UriLocation of the resource
|
|
346
|
+
* @returns A function that can be used to fetch
|
|
347
|
+
*/
|
|
348
|
+
getFetcher(loc) {
|
|
349
|
+
const fetcher = superGetFetcher(loc);
|
|
350
|
+
return async (input, init) => {
|
|
351
|
+
if (loc) {
|
|
352
|
+
await self.validateToken(await self.getToken(loc), loc);
|
|
353
|
+
}
|
|
354
|
+
return fetcher(input, init);
|
|
355
|
+
};
|
|
356
|
+
},
|
|
357
|
+
};
|
|
306
358
|
});
|
|
307
359
|
};
|
|
308
360
|
exports.default = stateModelFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/OAuthModel/model.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/OAuthModel/model.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function fixup(buf: string): string;
|
|
2
|
+
export declare function generateChallenge(val: string): Promise<string>;
|
|
3
|
+
export declare function processError(text: string, invalidErrorCb: () => void): any;
|
|
4
|
+
export declare function processTokenResponse(data: {
|
|
5
|
+
refresh_token?: string;
|
|
6
|
+
access_token: string;
|
|
7
|
+
}, storeRefreshTokenCb: (str: string) => void): string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.processTokenResponse = exports.processError = exports.generateChallenge = exports.fixup = void 0;
|
|
27
|
+
function fixup(buf) {
|
|
28
|
+
return buf.replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '');
|
|
29
|
+
}
|
|
30
|
+
exports.fixup = fixup;
|
|
31
|
+
async function generateChallenge(val) {
|
|
32
|
+
const sha256 = await Promise.resolve().then(() => __importStar(require('crypto-js/sha256'))).then(f => f.default);
|
|
33
|
+
const Base64 = await Promise.resolve().then(() => __importStar(require('crypto-js/enc-base64')));
|
|
34
|
+
return fixup(Base64.stringify(sha256(val)));
|
|
35
|
+
}
|
|
36
|
+
exports.generateChallenge = generateChallenge;
|
|
37
|
+
// if response is JSON, checks if it needs to remove tokens in error, or just plain throw
|
|
38
|
+
function processError(text, invalidErrorCb) {
|
|
39
|
+
var _a;
|
|
40
|
+
try {
|
|
41
|
+
const obj = JSON.parse(text);
|
|
42
|
+
if (obj.error === 'invalid_grant') {
|
|
43
|
+
invalidErrorCb();
|
|
44
|
+
}
|
|
45
|
+
return (_a = obj === null || obj === void 0 ? void 0 : obj.error_description) !== null && _a !== void 0 ? _a : text;
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
/* response text is not json, just use original text as error */
|
|
49
|
+
}
|
|
50
|
+
return text;
|
|
51
|
+
}
|
|
52
|
+
exports.processError = processError;
|
|
53
|
+
function processTokenResponse(data, storeRefreshTokenCb) {
|
|
54
|
+
if (data.refresh_token) {
|
|
55
|
+
storeRefreshTokenCb(data.refresh_token);
|
|
56
|
+
}
|
|
57
|
+
return data.access_token;
|
|
58
|
+
}
|
|
59
|
+
exports.processTokenResponse = processTokenResponse;
|
|
60
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/OAuthModel/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAgB,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC1E,CAAC;AAFD,sBAEC;AAEM,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,MAAM,GAAG,MAAM,kDAAO,kBAAkB,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpE,MAAM,MAAM,GAAG,wDAAa,sBAAsB,GAAC,CAAA;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC;AAJD,8CAIC;AAED,yFAAyF;AACzF,SAAgB,YAAY,CAAC,IAAY,EAAE,cAA0B;;IACnE,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE;YACjC,cAAc,EAAE,CAAA;SACjB;QACD,OAAO,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,iBAAiB,mCAAI,IAAI,CAAA;KACtC;IAAC,OAAO,CAAC,EAAE;QACV,gEAAgE;KACjE;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAXD,oCAWC;AAED,SAAgB,oBAAoB,CAClC,IAAsD,EACtD,mBAA0C;IAE1C,IAAI,IAAI,CAAC,aAAa,EAAE;QACtB,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;KACxC;IACD,OAAO,IAAI,CAAC,YAAY,CAAA;AAC1B,CAAC;AARD,oDAQC"}
|