@sanity/sdk 3.2.0 → 3.3.0-rc.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/_exports/_internal.d.ts +3 -3
- package/dist/_exports/_internal.js +4 -4
- package/dist/_exports/agent.d.ts +1 -1
- package/dist/_exports/agent.js +1 -1
- package/dist/_exports/comlink.d.ts +1 -1
- package/dist/_exports/dashboard.d.ts +1 -1
- package/dist/{authStore-BO2vch3I.d.ts → authStore-7dZCfKUq.d.ts} +20 -5
- package/dist/authStore-7dZCfKUq.d.ts.map +1 -0
- package/dist/{clientStore-BI4D8HhJ.js → clientStore-QDrJNTM4.js} +14 -10
- package/dist/clientStore-QDrJNTM4.js.map +1 -0
- package/dist/{createSanityInstance-BQIqyGLX.d.ts → createSanityInstance--Lrldto8.d.ts} +6 -3
- package/dist/createSanityInstance--Lrldto8.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +182 -142
- package/dist/index.js.map +1 -1
- package/dist/{topicStore-D0WqhQGF.d.ts → topicStore-CAnJsiqI.d.ts} +2 -2
- package/dist/{topicStore-D0WqhQGF.d.ts.map → topicStore-CAnJsiqI.d.ts.map} +1 -1
- package/dist/{version-BcRmCiYi.js → version-CYs30C7v.js} +3 -3
- package/dist/{version-BcRmCiYi.js.map → version-CYs30C7v.js.map} +1 -1
- package/package.json +3 -3
- package/src/auth/authStore.test.ts +18 -0
- package/src/auth/authStore.ts +4 -1
- package/src/auth/handleAuthCallback.test.ts +33 -0
- package/src/auth/handleAuthCallback.ts +11 -1
- package/src/auth/logout.test.ts +9 -1
- package/src/auth/logout.ts +18 -1
- package/src/auth/oauth/oauthActions.test.ts +178 -1
- package/src/auth/oauth/oauthActions.ts +111 -46
- package/src/auth/oauth/oauthAuth.test.ts +23 -0
- package/src/auth/oauth/oauthAuth.ts +18 -8
- package/src/config/authConfig.ts +5 -2
- package/dist/authStore-BO2vch3I.d.ts.map +0 -1
- package/dist/clientStore-BI4D8HhJ.js.map +0 -1
- package/dist/createSanityInstance-BQIqyGLX.d.ts.map +0 -1
|
@@ -17,6 +17,25 @@ export const OAUTH_VERIFIER_KEY = '__sanity_oauth_verifier'
|
|
|
17
17
|
/** sessionStorage key for the CSRF `state` value. */
|
|
18
18
|
export const OAUTH_STATE_KEY = '__sanity_oauth_state'
|
|
19
19
|
|
|
20
|
+
/** sessionStorage key for the location to return to after the callback. */
|
|
21
|
+
export const OAUTH_RETURN_TO_KEY = '__sanity_oauth_return_to'
|
|
22
|
+
|
|
23
|
+
const OAUTH_CALLBACK_PARAMS = ['code', 'state', 'error', 'error_description']
|
|
24
|
+
|
|
25
|
+
/** Strips the OAuth callback params from a URL. */
|
|
26
|
+
function stripOAuthParams(href: string): string {
|
|
27
|
+
const url = new URL(href, DEFAULT_BASE)
|
|
28
|
+
for (const param of OAUTH_CALLBACK_PARAMS) url.searchParams.delete(param)
|
|
29
|
+
return url.toString()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Whether `href` is the registered redirect URI (origin + pathname; query and hash ignored). */
|
|
33
|
+
function isCallbackRoute(href: string, redirectUri: string): boolean {
|
|
34
|
+
const current = new URL(href, DEFAULT_BASE)
|
|
35
|
+
const redirect = new URL(redirectUri, DEFAULT_BASE)
|
|
36
|
+
return current.origin === redirect.origin && current.pathname === redirect.pathname
|
|
37
|
+
}
|
|
38
|
+
|
|
20
39
|
interface TokenEndpointResponse {
|
|
21
40
|
access_token: string
|
|
22
41
|
token_type: string
|
|
@@ -29,6 +48,19 @@ function getResourceIndicator(organizationId: string): string {
|
|
|
29
48
|
return `urn:io.sanity:organization:${organizationId}`
|
|
30
49
|
}
|
|
31
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Appends the RFC 8707 `resource` indicator to `params` when an organisation
|
|
53
|
+
* id is configured. Without one, the request is left unscoped.
|
|
54
|
+
*/
|
|
55
|
+
function appendResourceIndicator(
|
|
56
|
+
params: URLSearchParams,
|
|
57
|
+
oauth: NonNullable<AuthOptions['oauth']>,
|
|
58
|
+
): void {
|
|
59
|
+
if (oauth.organizationId) {
|
|
60
|
+
params.append('resource', getResourceIndicator(oauth.organizationId))
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
32
64
|
/**
|
|
33
65
|
* Serialises tokens for storage, converting `expiresAt` to an ISO string.
|
|
34
66
|
*
|
|
@@ -70,6 +102,21 @@ function createOAuthClient(options: AuthOptions): SanityClient {
|
|
|
70
102
|
})
|
|
71
103
|
}
|
|
72
104
|
|
|
105
|
+
/** POSTs form-encoded params to the OAuth token endpoint. */
|
|
106
|
+
function postTokenRequest(
|
|
107
|
+
client: SanityClient,
|
|
108
|
+
params: URLSearchParams,
|
|
109
|
+
tag: string,
|
|
110
|
+
): Promise<TokenEndpointResponse> {
|
|
111
|
+
return client.request<TokenEndpointResponse>({
|
|
112
|
+
method: 'POST',
|
|
113
|
+
url: '/auth/oauth/token',
|
|
114
|
+
headers: {'content-type': 'application/x-www-form-urlencoded'},
|
|
115
|
+
body: params.toString(),
|
|
116
|
+
tag,
|
|
117
|
+
})
|
|
118
|
+
}
|
|
119
|
+
|
|
73
120
|
/** Converts a token endpoint response to the {@link OAuthTokens} shape. */
|
|
74
121
|
function toOAuthTokens(response: TokenEndpointResponse): OAuthTokens {
|
|
75
122
|
return {
|
|
@@ -99,6 +146,17 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
|
|
|
99
146
|
const session = typeof sessionStorage !== 'undefined' ? sessionStorage : undefined
|
|
100
147
|
session?.setItem(OAUTH_VERIFIER_KEY, codeVerifier)
|
|
101
148
|
session?.setItem(OAUTH_STATE_KEY, oauthState)
|
|
149
|
+
// The redirect URI must match the registered one exactly, so the current
|
|
150
|
+
// location (deep link) is stashed here and restored by the callback. OAuth
|
|
151
|
+
// params are only stripped when we are already on the callback route, so
|
|
152
|
+
// legitimate app params like `?state=draft` survive the round trip.
|
|
153
|
+
const currentHref = getDefaultLocation()
|
|
154
|
+
if (currentHref !== DEFAULT_BASE) {
|
|
155
|
+
const returnTo = isCallbackRoute(currentHref, options.oauth.redirectUri)
|
|
156
|
+
? stripOAuthParams(currentHref)
|
|
157
|
+
: currentHref
|
|
158
|
+
session?.setItem(OAUTH_RETURN_TO_KEY, returnTo)
|
|
159
|
+
}
|
|
102
160
|
|
|
103
161
|
const authorizeUrl = new URL(
|
|
104
162
|
'/v1/auth/oauth/authorize',
|
|
@@ -110,7 +168,7 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
|
|
|
110
168
|
authorizeUrl.searchParams.set('state', oauthState)
|
|
111
169
|
authorizeUrl.searchParams.set('code_challenge', codeChallenge)
|
|
112
170
|
authorizeUrl.searchParams.set('code_challenge_method', 'S256')
|
|
113
|
-
authorizeUrl.searchParams
|
|
171
|
+
appendResourceIndicator(authorizeUrl.searchParams, options.oauth)
|
|
114
172
|
|
|
115
173
|
logger.info('Starting OAuth authorization')
|
|
116
174
|
if (typeof window !== 'undefined' && typeof window.location?.assign === 'function') {
|
|
@@ -123,9 +181,14 @@ export const startOAuthAuthorization = bindActionGlobally(authStore, async ({sta
|
|
|
123
181
|
* responses, exchanges the authorization `code` for tokens, persists them, and
|
|
124
182
|
* transitions to `LOGGED_IN`.
|
|
125
183
|
*
|
|
126
|
-
* Returns the
|
|
127
|
-
*
|
|
128
|
-
*
|
|
184
|
+
* Returns the URL for the caller to `history.replaceState` to when a callback
|
|
185
|
+
* was processed: on success, the same-origin location the user was on when
|
|
186
|
+
* the flow started (if any), otherwise the callback URL cleaned of OAuth
|
|
187
|
+
* params. Returns `false` when there was nothing to handle (no code, or an
|
|
188
|
+
* exchange already in progress). A callback that fails validation while a
|
|
189
|
+
* session is already `LOGGED_IN` (e.g. a remount before the params were
|
|
190
|
+
* stripped) is ignored with a warning and still returns the cleaned URL, so a
|
|
191
|
+
* string result does not imply an exchange ran.
|
|
129
192
|
*
|
|
130
193
|
* @public
|
|
131
194
|
*/
|
|
@@ -152,22 +215,29 @@ export const handleOAuthCallback = bindActionGlobally(
|
|
|
152
215
|
|
|
153
216
|
const session = typeof sessionStorage !== 'undefined' ? sessionStorage : undefined
|
|
154
217
|
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
218
|
+
const cleanedUrl = stripOAuthParams(locationHref)
|
|
219
|
+
|
|
220
|
+
// Callback failures move to ERROR, unless a session is already
|
|
221
|
+
// established: a stale callback URL (e.g. remount before the params were
|
|
222
|
+
// stripped, after the artifacts were cleared) or a denied re-authorization
|
|
223
|
+
// must not clobber LOGGED_IN.
|
|
224
|
+
const rejectCallback = (name: string, message: string): string => {
|
|
225
|
+
if (authState.type === AuthStateType.LOGGED_IN) {
|
|
226
|
+
// Leave PKCE artifacts alone: a re-authorization may be in flight.
|
|
227
|
+
logger.warn(`${message} — ignoring callback, session already established`)
|
|
228
|
+
return cleanedUrl
|
|
229
|
+
}
|
|
230
|
+
logger.error(`${message} — rejecting callback`)
|
|
231
|
+
clearOAuthArtifacts(session)
|
|
232
|
+
state.set(name, {authState: {type: AuthStateType.ERROR, error: new Error(message)}})
|
|
233
|
+
return cleanedUrl
|
|
158
234
|
}
|
|
159
|
-
const cleanedUrl = cleanedUrlObj.toString()
|
|
160
235
|
|
|
161
236
|
if (error) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
type: AuthStateType.ERROR,
|
|
167
|
-
error: new Error(errorDescription ? `${error}: ${errorDescription}` : error),
|
|
168
|
-
},
|
|
169
|
-
})
|
|
170
|
-
return cleanedUrl
|
|
237
|
+
return rejectCallback(
|
|
238
|
+
'oauthCallbackError',
|
|
239
|
+
errorDescription ? `${error}: ${errorDescription}` : error,
|
|
240
|
+
)
|
|
171
241
|
}
|
|
172
242
|
|
|
173
243
|
if (!code) {
|
|
@@ -177,22 +247,12 @@ export const handleOAuthCallback = bindActionGlobally(
|
|
|
177
247
|
|
|
178
248
|
const storedState = session?.getItem(OAUTH_STATE_KEY) ?? null
|
|
179
249
|
if (!returnedState || !storedState || returnedState !== storedState) {
|
|
180
|
-
|
|
181
|
-
clearOAuthArtifacts(session)
|
|
182
|
-
state.set('oauthStateMismatch', {
|
|
183
|
-
authState: {type: AuthStateType.ERROR, error: new Error('OAuth state mismatch')},
|
|
184
|
-
})
|
|
185
|
-
return cleanedUrl
|
|
250
|
+
return rejectCallback('oauthStateMismatch', 'OAuth state mismatch')
|
|
186
251
|
}
|
|
187
252
|
|
|
188
253
|
const codeVerifier = session?.getItem(OAUTH_VERIFIER_KEY) ?? null
|
|
189
254
|
if (!codeVerifier) {
|
|
190
|
-
|
|
191
|
-
clearOAuthArtifacts(session)
|
|
192
|
-
state.set('oauthVerifierMissing', {
|
|
193
|
-
authState: {type: AuthStateType.ERROR, error: new Error('OAuth code verifier missing')},
|
|
194
|
-
})
|
|
195
|
-
return cleanedUrl
|
|
255
|
+
return rejectCallback('oauthVerifierMissing', 'OAuth code verifier missing')
|
|
196
256
|
}
|
|
197
257
|
|
|
198
258
|
logger.info('Exchanging OAuth code for tokens')
|
|
@@ -208,18 +268,13 @@ export const handleOAuthCallback = bindActionGlobally(
|
|
|
208
268
|
code_verifier: codeVerifier,
|
|
209
269
|
redirect_uri: options.oauth.redirectUri,
|
|
210
270
|
client_id: options.oauth.clientId,
|
|
211
|
-
resource: getResourceIndicator(options.oauth.organizationId),
|
|
212
|
-
})
|
|
213
|
-
const response = await client.request<TokenEndpointResponse>({
|
|
214
|
-
method: 'POST',
|
|
215
|
-
url: '/auth/oauth/token',
|
|
216
|
-
headers: {'content-type': 'application/x-www-form-urlencoded'},
|
|
217
|
-
body: params.toString(),
|
|
218
|
-
tag: 'oauth.token',
|
|
219
271
|
})
|
|
272
|
+
appendResourceIndicator(params, options.oauth)
|
|
273
|
+
const response = await postTokenRequest(client, params, 'oauth.token')
|
|
220
274
|
|
|
221
275
|
const tokens = toOAuthTokens(response)
|
|
222
276
|
options.storageArea?.setItem(options.storageKey, serializeTokens(tokens))
|
|
277
|
+
const returnTo = getSameOriginReturnTo(session, options.oauth.redirectUri)
|
|
223
278
|
clearOAuthArtifacts(session)
|
|
224
279
|
|
|
225
280
|
logger.info('OAuth tokens obtained, user logged in')
|
|
@@ -227,7 +282,7 @@ export const handleOAuthCallback = bindActionGlobally(
|
|
|
227
282
|
authState: createLoggedInAuthState(tokens.accessToken, null),
|
|
228
283
|
oauthTokens: tokens,
|
|
229
284
|
})
|
|
230
|
-
return cleanedUrl
|
|
285
|
+
return returnTo ?? cleanedUrl
|
|
231
286
|
} catch (exchangeError) {
|
|
232
287
|
logger.error('Failed to exchange OAuth code for tokens', {error: exchangeError})
|
|
233
288
|
clearOAuthArtifacts(session)
|
|
@@ -296,15 +351,9 @@ async function doRefreshOAuthTokens({
|
|
|
296
351
|
grant_type: 'refresh_token',
|
|
297
352
|
refresh_token: current.refreshToken,
|
|
298
353
|
client_id: options.oauth.clientId,
|
|
299
|
-
resource: getResourceIndicator(options.oauth.organizationId),
|
|
300
|
-
})
|
|
301
|
-
const response = await client.request<TokenEndpointResponse>({
|
|
302
|
-
method: 'POST',
|
|
303
|
-
url: '/auth/oauth/token',
|
|
304
|
-
headers: {'content-type': 'application/x-www-form-urlencoded'},
|
|
305
|
-
body: params.toString(),
|
|
306
|
-
tag: 'oauth.refresh',
|
|
307
354
|
})
|
|
355
|
+
appendResourceIndicator(params, options.oauth)
|
|
356
|
+
const response = await postTokenRequest(client, params, 'oauth.refresh')
|
|
308
357
|
|
|
309
358
|
const tokens = toOAuthTokens(response)
|
|
310
359
|
if (!tokens.refreshToken) tokens.refreshToken = current.refreshToken
|
|
@@ -386,4 +435,20 @@ export const getOAuthTokensState = bindActionGlobally(
|
|
|
386
435
|
function clearOAuthArtifacts(session: Storage | undefined): void {
|
|
387
436
|
session?.removeItem(OAUTH_VERIFIER_KEY)
|
|
388
437
|
session?.removeItem(OAUTH_STATE_KEY)
|
|
438
|
+
session?.removeItem(OAUTH_RETURN_TO_KEY)
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* Reads the stashed pre-authorize location, only honouring it when it shares
|
|
443
|
+
* the registered redirect URI's origin so a tampered value cannot redirect
|
|
444
|
+
* off-site. (`origin` includes the scheme, so non-http(s) URLs are rejected.)
|
|
445
|
+
*/
|
|
446
|
+
function getSameOriginReturnTo(session: Storage | undefined, redirectUri: string): string | null {
|
|
447
|
+
const returnTo = session?.getItem(OAUTH_RETURN_TO_KEY) ?? null
|
|
448
|
+
if (!returnTo) return null
|
|
449
|
+
try {
|
|
450
|
+
return new URL(returnTo).origin === new URL(redirectUri).origin ? returnTo : null
|
|
451
|
+
} catch {
|
|
452
|
+
return null
|
|
453
|
+
}
|
|
389
454
|
}
|
|
@@ -83,6 +83,11 @@ describe('serialize/deserialize tokens', () => {
|
|
|
83
83
|
expect(deserializeTokens('{"foo":"bar"}')).toBeNull()
|
|
84
84
|
expect(deserializeTokens('123')).toBeNull()
|
|
85
85
|
})
|
|
86
|
+
|
|
87
|
+
it('returns null when expiresAt does not parse to a valid date', () => {
|
|
88
|
+
const raw = JSON.stringify({...JSON.parse(serializeTokens(tokens)), expiresAt: 'garbage'})
|
|
89
|
+
expect(deserializeTokens(raw)).toBeNull()
|
|
90
|
+
})
|
|
86
91
|
})
|
|
87
92
|
|
|
88
93
|
describe('getOauthInitialState', () => {
|
|
@@ -94,6 +99,16 @@ describe('getOauthInitialState', () => {
|
|
|
94
99
|
expect(result.authMethod).toBe('localstorage')
|
|
95
100
|
})
|
|
96
101
|
|
|
102
|
+
it('returns LOGGED_OUT and clears storage when persisted tokens are corrupt', () => {
|
|
103
|
+
const storageArea = createMemoryStorage({
|
|
104
|
+
[OAUTH_TOKENS_KEY]: '{"accessToken":"a","expiresAt":"garbage"}',
|
|
105
|
+
})
|
|
106
|
+
const result = getOauthInitialState(baseOptions({storageArea}))
|
|
107
|
+
expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
|
|
108
|
+
expect(result.oauthTokens).toBeUndefined()
|
|
109
|
+
expect(storageArea.getItem(OAUTH_TOKENS_KEY)).toBeNull()
|
|
110
|
+
})
|
|
111
|
+
|
|
97
112
|
it('returns LOGGING_IN when the callback URL matches the redirect URI', () => {
|
|
98
113
|
const storageArea = createMemoryStorage()
|
|
99
114
|
const result = getOauthInitialState(
|
|
@@ -110,6 +125,14 @@ describe('getOauthInitialState', () => {
|
|
|
110
125
|
expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
|
|
111
126
|
})
|
|
112
127
|
|
|
128
|
+
it('returns LOGGED_OUT when the redirect URI only carries a stray state param', () => {
|
|
129
|
+
const storageArea = createMemoryStorage()
|
|
130
|
+
const result = getOauthInitialState(
|
|
131
|
+
baseOptions({storageArea, initialLocationHref: 'https://app/callback?state=s'}),
|
|
132
|
+
)
|
|
133
|
+
expect(result.authState).toEqual({type: AuthStateType.LOGGED_OUT, isDestroyingSession: false})
|
|
134
|
+
})
|
|
135
|
+
|
|
113
136
|
it('returns LOGGED_OUT when there are no tokens and no callback', () => {
|
|
114
137
|
const storageArea = createMemoryStorage()
|
|
115
138
|
const result = getOauthInitialState(baseOptions({storageArea}))
|
|
@@ -19,7 +19,9 @@ interface SerializedOAuthTokens extends Omit<OAuthTokens, 'expiresAt'> {
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Parses persisted token JSON back into {@link OAuthTokens}. Returns `null`
|
|
22
|
-
* when the value is missing or malformed
|
|
22
|
+
* when the value is missing or malformed, including an `expiresAt` that does
|
|
23
|
+
* not parse to a valid date (an `Invalid Date` would otherwise read as never
|
|
24
|
+
* expiring, since `NaN <= now` is always `false`).
|
|
23
25
|
*
|
|
24
26
|
* @internal
|
|
25
27
|
*/
|
|
@@ -38,11 +40,13 @@ export function deserializeTokens(raw: string | null): OAuthTokens | null {
|
|
|
38
40
|
return null
|
|
39
41
|
}
|
|
40
42
|
const value = parsed as SerializedOAuthTokens
|
|
43
|
+
const expiresAt = new Date(value.expiresAt)
|
|
44
|
+
if (Number.isNaN(expiresAt.getTime())) return null
|
|
41
45
|
return {
|
|
42
46
|
accessToken: value.accessToken,
|
|
43
47
|
tokenType: 'bearer',
|
|
44
48
|
expiresIn: value.expiresIn,
|
|
45
|
-
expiresAt
|
|
49
|
+
expiresAt,
|
|
46
50
|
...(value.refreshToken !== undefined && {refreshToken: value.refreshToken}),
|
|
47
51
|
}
|
|
48
52
|
} catch {
|
|
@@ -55,7 +59,7 @@ export function deserializeTokens(raw: string | null): OAuthTokens | null {
|
|
|
55
59
|
*
|
|
56
60
|
* State discovery order:
|
|
57
61
|
* 1. Persisted tokens in `__sanity_oauth_tokens` → `LOGGED_IN`
|
|
58
|
-
* 2. Callback URL (contains `code
|
|
62
|
+
* 2. Callback URL (contains `code` or `error` and matches `redirectUri`)
|
|
59
63
|
* → `LOGGING_IN`
|
|
60
64
|
* 3. Otherwise → `LOGGED_OUT`
|
|
61
65
|
*
|
|
@@ -68,7 +72,12 @@ export function getOauthInitialState(options: AuthStrategyOptions): AuthStrategy
|
|
|
68
72
|
const redirectUri = authConfig.oauth?.redirectUri
|
|
69
73
|
|
|
70
74
|
// Persisted tokens win
|
|
71
|
-
const
|
|
75
|
+
const rawTokens = storageArea?.getItem(OAUTH_TOKENS_KEY) ?? null
|
|
76
|
+
const tokens = deserializeTokens(rawTokens)
|
|
77
|
+
if (rawTokens && !tokens) {
|
|
78
|
+
// Corrupt entry: drop it so it cannot keep shadowing a fresh login
|
|
79
|
+
storageArea?.removeItem(OAUTH_TOKENS_KEY)
|
|
80
|
+
}
|
|
72
81
|
if (tokens) {
|
|
73
82
|
return {
|
|
74
83
|
authState: createLoggedInAuthState(tokens.accessToken, null),
|
|
@@ -80,11 +89,12 @@ export function getOauthInitialState(options: AuthStrategyOptions): AuthStrategy
|
|
|
80
89
|
}
|
|
81
90
|
}
|
|
82
91
|
|
|
83
|
-
// Callback URL with code/
|
|
84
|
-
//
|
|
92
|
+
// Callback URL with code/error whose origin + pathname match our redirect
|
|
93
|
+
// URI (query and hash are ignored). `state` alone is not a callback: the
|
|
94
|
+
// server always sends `code` or `error`, and handleOAuthCallback would
|
|
95
|
+
// otherwise leave the app stuck in LOGGING_IN.
|
|
85
96
|
const {searchParams} = new URL(initialLocationHref, DEFAULT_BASE)
|
|
86
|
-
const isCallback =
|
|
87
|
-
searchParams.has('code') || searchParams.has('state') || searchParams.has('error')
|
|
97
|
+
const isCallback = searchParams.has('code') || searchParams.has('error')
|
|
88
98
|
if (redirectUri && isCallback) {
|
|
89
99
|
const loc = new URL(initialLocationHref, DEFAULT_BASE)
|
|
90
100
|
const redirect = new URL(redirectUri, DEFAULT_BASE)
|
package/src/config/authConfig.ts
CHANGED
|
@@ -90,8 +90,11 @@ export interface AuthConfig {
|
|
|
90
90
|
redirectUri: string
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
|
-
* Organisation id used for RFC 8707 resource scoping.
|
|
93
|
+
* Organisation id used for RFC 8707 resource scoping. Optional: when
|
|
94
|
+
* omitted, the `resource` parameter is left off the authorize and token
|
|
95
|
+
* requests, so the issued tokens are not restricted to a single
|
|
96
|
+
* organisation.
|
|
94
97
|
*/
|
|
95
|
-
organizationId
|
|
98
|
+
organizationId?: string
|
|
96
99
|
}
|
|
97
100
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authStore-BO2vch3I.d.ts","names":[],"sources":["../src/store/createStoreState.ts","../src/store/defineStore.ts","../src/store/createActionBinder.ts","../src/store/createStateSourceAction.ts","../src/store/fetcherStore.ts","../src/access/checkPermissions.ts","../src/utils/includeShape.ts","../src/applications/applications.ts","../src/auth/authStateType.ts","../src/project/organizationVerification.ts","../src/auth/getOrganizationVerificationState.ts","../src/auth/handleAuthCallback.ts","../src/auth/logout.ts","../src/auth/oauth/types.ts","../src/auth/oauth/oauthActions.ts","../src/client/clientStore.ts","../src/comments/types.ts","../src/comments/commentActions.ts","../src/comments/commentsStore.ts","../src/config/handles.ts","../src/utils/logger.ts","../src/config/loggingConfig.ts","../src/datasets/datasets.ts","../src/typegen/groqCompat.ts","../src/typegen/resolve.ts","../src/document/actions.ts","../src/document/patchOperations.ts","../src/document/processMutations.ts","../src/document/permissions.ts","../src/document/sharedListener.ts","../src/document/documentStore.ts","../src/document/reducers.ts","../src/document/events.ts","../src/document/applyDocumentActions.ts","../src/document/processActions/releaseUtil.ts","../src/favorites/favorites.ts","../src/installations/installations.ts","../src/organization/organization.ts","../src/organizations/organizations.ts","../src/users/types.ts","../src/presence/types.ts","../src/presence/presenceStore.ts","../src/projection/types.ts","../src/preview/types.ts","../src/project/project.ts","../src/projection/getProjectionState.ts","../src/projection/resolveProjection.ts","../src/projects/projects.ts","../src/query/queryStore.ts","../src/releases/releasesStore.ts","../src/releases/getPerspectiveState.ts","../src/typegen/defineProjection.ts","../src/users/usersStore.ts","../src/utils/getCorsErrorProjectId.ts","../src/utils/isImportError.ts","../src/version.ts","../src/_exports/index.ts","../src/auth/authStore.ts"],"mappings":"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"}
|