@workos-inc/authkit-nextjs 2.2.3 → 2.3.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/README.md +106 -13
- package/dist/esm/actions.js +16 -0
- package/dist/esm/actions.js.map +1 -1
- package/dist/esm/auth.js +25 -8
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/components/index.js +2 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/useAccessToken.js +141 -0
- package/dist/esm/components/useAccessToken.js.map +1 -0
- package/dist/esm/session.js +4 -10
- package/dist/esm/session.js.map +1 -1
- package/dist/esm/types/actions.d.ts +10 -0
- package/dist/esm/types/auth.d.ts +5 -0
- package/dist/esm/types/components/index.d.ts +2 -1
- package/dist/esm/types/components/useAccessToken.d.ts +9 -0
- package/dist/esm/types/interfaces.d.ts +10 -0
- package/dist/esm/types/session.d.ts +1 -4
- package/dist/esm/types/workos.d.ts +1 -1
- package/dist/esm/workos.js +1 -1
- package/package.json +1 -1
- package/src/actions.ts +18 -0
- package/src/auth.ts +25 -8
- package/src/components/index.ts +2 -1
- package/src/components/useAccessToken.ts +169 -0
- package/src/interfaces.ts +7 -0
- package/src/session.ts +5 -10
- package/src/workos.ts +1 -1
package/README.md
CHANGED
|
@@ -59,11 +59,10 @@ WORKOS_API_PORT=3000 # port to use for API calls
|
|
|
59
59
|
WORKOS_COOKIE_SAMESITE='lax' # SameSite attribute for cookies: 'lax' (default), 'strict', or 'none'.
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
>[!WARNING]
|
|
63
|
-
>Setting `WORKOS_COOKIE_SAMESITE='none'` allows cookies to be sent in cross-origin contexts (like iframes), but reduces protection against CSRF attacks. This setting forces cookies to be secure (HTTPS only) and should only be used when absolutely necessary for your application architecture.
|
|
62
|
+
> [!WARNING]
|
|
63
|
+
> Setting `WORKOS_COOKIE_SAMESITE='none'` allows cookies to be sent in cross-origin contexts (like iframes), but reduces protection against CSRF attacks. This setting forces cookies to be secure (HTTPS only) and should only be used when absolutely necessary for your application architecture.
|
|
64
64
|
|
|
65
|
-
>[!TIP]
|
|
66
|
-
>`WORKOS_COOKIE_DOMAIN` can be used to share WorkOS sessions between apps/domains. Note: The `WORKOS_COOKIE_PASSWORD` would need to be the same across apps/domains. Not needed for most use cases.
|
|
65
|
+
> [!TIP] >`WORKOS_COOKIE_DOMAIN` can be used to share WorkOS sessions between apps/domains. Note: The `WORKOS_COOKIE_PASSWORD` would need to be the same across apps/domains. Not needed for most use cases.
|
|
67
66
|
|
|
68
67
|
## Setup
|
|
69
68
|
|
|
@@ -284,6 +283,97 @@ export function SwitchOrganizationButton() {
|
|
|
284
283
|
}
|
|
285
284
|
```
|
|
286
285
|
|
|
286
|
+
### Access Token Management
|
|
287
|
+
|
|
288
|
+
#### useAccessToken Hook
|
|
289
|
+
|
|
290
|
+
This library provides a `useAccessToken` hook for client-side access token management with automatic refresh functionality.
|
|
291
|
+
|
|
292
|
+
##### Features
|
|
293
|
+
|
|
294
|
+
- Automatic token refresh before expiration
|
|
295
|
+
- Manual refresh capability
|
|
296
|
+
- Loading and error states
|
|
297
|
+
- Synchronized with the main authentication session
|
|
298
|
+
- Race condition prevention
|
|
299
|
+
|
|
300
|
+
##### When to Use
|
|
301
|
+
|
|
302
|
+
Use this hook when you need direct access to the JWT token for:
|
|
303
|
+
|
|
304
|
+
- Making authenticated API calls
|
|
305
|
+
- Setting up external auth-dependent libraries
|
|
306
|
+
- Implementing custom authentication logic
|
|
307
|
+
|
|
308
|
+
##### Basic Usage
|
|
309
|
+
|
|
310
|
+
```jsx
|
|
311
|
+
function ApiClient() {
|
|
312
|
+
const { accessToken, loading, error, refresh } = useAccessToken();
|
|
313
|
+
|
|
314
|
+
if (loading) return <div>Loading...</div>;
|
|
315
|
+
if (error) return <div>Error: {error.message}</div>;
|
|
316
|
+
if (!accessToken) return <div>Not authenticated</div>;
|
|
317
|
+
|
|
318
|
+
return (
|
|
319
|
+
<div>
|
|
320
|
+
<p>Token available: {accessToken.substring(0, 10)}...</p>
|
|
321
|
+
<button onClick={refresh}>Refresh token</button>
|
|
322
|
+
</div>
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
##### API Reference
|
|
328
|
+
|
|
329
|
+
| Property | Type | Description |
|
|
330
|
+
| ------------- | ------------------------------------ | --------------------------------------------- |
|
|
331
|
+
| `accessToken` | `string \| undefined` | The current access token |
|
|
332
|
+
| `loading` | `boolean` | True when token is being fetched or refreshed |
|
|
333
|
+
| `error` | `Error \| null` | Error during token fetch/refresh, or null |
|
|
334
|
+
| `refresh` | `() => Promise<string \| undefined>` | Manually refresh the token |
|
|
335
|
+
|
|
336
|
+
##### Integration with useAuth
|
|
337
|
+
|
|
338
|
+
The `useAccessToken` hook automatically synchronizes with the main authentication session. When you call `refreshAuth()` from `useAuth`, the access token will update accordingly. Similarly, using the `refresh()` method from `useAccessToken` will update the entire authentication session.
|
|
339
|
+
|
|
340
|
+
##### Security Considerations
|
|
341
|
+
|
|
342
|
+
JWT tokens are sensitive credentials and should be handled carefully:
|
|
343
|
+
|
|
344
|
+
- Only use the token where necessary
|
|
345
|
+
- Don't store tokens in localStorage or sessionStorage
|
|
346
|
+
- Be cautious about exposing tokens in your application state
|
|
347
|
+
|
|
348
|
+
### Session Refresh Callbacks
|
|
349
|
+
|
|
350
|
+
When using the `authkit` function directly, you can provide callbacks to be notified when a session is refreshed:
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
const { session, headers } = await authkit(request, {
|
|
354
|
+
onSessionRefreshSuccess: async ({ accessToken, user, impersonator }) => {
|
|
355
|
+
// Log successful refresh
|
|
356
|
+
console.log(`Session refreshed for ${user.email}.`);
|
|
357
|
+
},
|
|
358
|
+
onSessionRefreshError: async ({ error, request }) => {
|
|
359
|
+
// Log refresh failure
|
|
360
|
+
console.error('Session refresh failed:', error);
|
|
361
|
+
// Notify monitoring system
|
|
362
|
+
await notifyMonitoring('session_refresh_failed', {
|
|
363
|
+
url: request.url,
|
|
364
|
+
error: error.message,
|
|
365
|
+
});
|
|
366
|
+
},
|
|
367
|
+
});
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
These callbacks provide a way to perform side effects when sessions are refreshed in the middleware. Common use cases include:
|
|
371
|
+
|
|
372
|
+
- Logging authentication events
|
|
373
|
+
- Updating last activity timestamps
|
|
374
|
+
- Triggering organization-specific data prefetching
|
|
375
|
+
- Recording failed refresh attempts
|
|
376
|
+
|
|
287
377
|
### Middleware auth
|
|
288
378
|
|
|
289
379
|
The default behavior of this library is to request authentication via the `withAuth` method on a per-page basis. There are some use cases where you don't want to call `withAuth` (e.g. you don't need user data for your page) or if you'd prefer a "secure by default" approach where every route defined in your middleware matcher is protected unless specified otherwise. In those cases you can opt-in to use middleware auth instead:
|
|
@@ -420,7 +510,7 @@ const workos = getWorkOS();
|
|
|
420
510
|
const organizations = await workos.organizations.listOrganizations({
|
|
421
511
|
limit: 10,
|
|
422
512
|
});
|
|
423
|
-
|
|
513
|
+
```
|
|
424
514
|
|
|
425
515
|
### Advanced: Custom authentication flows
|
|
426
516
|
|
|
@@ -443,19 +533,22 @@ async function handleEmailVerification(req) {
|
|
|
443
533
|
});
|
|
444
534
|
|
|
445
535
|
// Save the session data to a cookie
|
|
446
|
-
await saveSession(
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
536
|
+
await saveSession(
|
|
537
|
+
{
|
|
538
|
+
accessToken: authResponse.accessToken,
|
|
539
|
+
refreshToken: authResponse.refreshToken,
|
|
540
|
+
user: authResponse.user,
|
|
541
|
+
impersonator: authResponse.impersonator,
|
|
542
|
+
},
|
|
543
|
+
req,
|
|
544
|
+
);
|
|
452
545
|
|
|
453
546
|
return Response.redirect('/dashboard');
|
|
454
547
|
}
|
|
455
548
|
```
|
|
456
549
|
|
|
457
|
-
>[!NOTE]
|
|
458
|
-
>This is an advanced API intended for specific integration scenarios, such as those users using self-hosted AuthKit. If you're using hosted AuthKit you should not need this.
|
|
550
|
+
> [!NOTE]
|
|
551
|
+
> This is an advanced API intended for specific integration scenarios, such as those users using self-hosted AuthKit. If you're using hosted AuthKit you should not need this.
|
|
459
552
|
|
|
460
553
|
The `saveSession` function accepts either a `NextRequest` object or a URL string as its second parameter.
|
|
461
554
|
|
package/dist/esm/actions.js
CHANGED
|
@@ -36,4 +36,20 @@ export const refreshAuthAction = async ({ ensureSignedIn, organizationId, }) =>
|
|
|
36
36
|
export const switchToOrganizationAction = async (organizationId, options) => {
|
|
37
37
|
return sanitize(await switchToOrganization(organizationId, options));
|
|
38
38
|
};
|
|
39
|
+
/**
|
|
40
|
+
* This action is used to get the access token from the auth object.
|
|
41
|
+
* It is used to fetch the access token from the server.
|
|
42
|
+
*/
|
|
43
|
+
export async function getAccessTokenAction() {
|
|
44
|
+
const auth = await withAuth();
|
|
45
|
+
return auth.accessToken;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* This action is used to refresh the access token from the auth object.
|
|
49
|
+
* It is used to fetch the access token from the server.
|
|
50
|
+
*/
|
|
51
|
+
export async function refreshAccessTokenAction() {
|
|
52
|
+
const auth = await refreshSession();
|
|
53
|
+
return auth.accessToken;
|
|
54
|
+
}
|
|
39
55
|
//# sourceMappingURL=actions.js.map
|
package/dist/esm/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,SAAS,QAAQ,CAAkC,KAAQ;IACzD,6DAA6D;IAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAE,QAAQ,KAA4B,EAAE,EAAE,EAAE;IACpF,MAAM,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;IACpE,OAAO,MAAM,SAAS,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAsC,EAAE,EAAE;IAC5E,OAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,cAAc,EACd,cAAc,GAIf,EAAE,EAAE;IACH,OAAO,QAAQ,CAAC,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,cAAsB,EAAE,OAAqC,EAAE,EAAE;IAChH,OAAO,QAAQ,CAAC,MAAM,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,SAAS,QAAQ,CAAkC,KAAQ;IACzD,6DAA6D;IAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EAAE,QAAQ,KAA4B,EAAE,EAAE,EAAE;IACpF,MAAM,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,cAAsB,EAAE,EAAE;IACpE,OAAO,MAAM,SAAS,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAsC,EAAE,EAAE;IAC5E,OAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,cAAc,EACd,cAAc,GAIf,EAAE,EAAE;IACH,OAAO,QAAQ,CAAC,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,cAAsB,EAAE,OAAqC,EAAE,EAAE;IAChH,OAAO,QAAQ,CAAC,MAAM,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC9B,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;IACpC,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,CAAC"}
|
package/dist/esm/auth.js
CHANGED
|
@@ -2,22 +2,39 @@
|
|
|
2
2
|
import { revalidatePath, revalidateTag } from 'next/cache';
|
|
3
3
|
import { cookies, headers } from 'next/headers';
|
|
4
4
|
import { redirect } from 'next/navigation';
|
|
5
|
-
import { WORKOS_COOKIE_NAME } from './env-variables.js';
|
|
5
|
+
import { WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_NAME } from './env-variables.js';
|
|
6
6
|
import { getAuthorizationUrl } from './get-authorization-url.js';
|
|
7
|
-
import { refreshSession,
|
|
8
|
-
import {
|
|
7
|
+
import { refreshSession, withAuth } from './session.js';
|
|
8
|
+
import { getWorkOS } from './workos.js';
|
|
9
9
|
export async function getSignInUrl({ organizationId, loginHint, redirectUri, } = {}) {
|
|
10
10
|
return getAuthorizationUrl({ organizationId, screenHint: 'sign-in', loginHint, redirectUri });
|
|
11
11
|
}
|
|
12
12
|
export async function getSignUpUrl({ organizationId, loginHint, redirectUri, } = {}) {
|
|
13
13
|
return getAuthorizationUrl({ organizationId, screenHint: 'sign-up', loginHint, redirectUri });
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Sign out the user and delete the session cookie.
|
|
17
|
+
* @param options Options for signing out.
|
|
18
|
+
* @param options.returnTo The URL to redirect to after signing out.
|
|
19
|
+
*/
|
|
15
20
|
export async function signOut({ returnTo } = {}) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
let sessionId;
|
|
22
|
+
try {
|
|
23
|
+
const { sessionId: sid } = await withAuth();
|
|
24
|
+
sessionId = sid;
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
const nextCookies = await cookies();
|
|
28
|
+
const cookieName = WORKOS_COOKIE_NAME || 'wos-session';
|
|
29
|
+
const domain = WORKOS_COOKIE_DOMAIN || /* istanbul ignore next */ undefined;
|
|
30
|
+
nextCookies.delete({ name: cookieName, domain, path: '/' });
|
|
31
|
+
if (sessionId) {
|
|
32
|
+
redirect(getWorkOS().userManagement.getLogoutUrl({ sessionId, returnTo }));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
redirect(returnTo !== null && returnTo !== void 0 ? returnTo : '/');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
21
38
|
}
|
|
22
39
|
export async function switchToOrganization(organizationId, options = {}) {
|
|
23
40
|
var _a;
|
package/dist/esm/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Impersonation } from './impersonation.js';
|
|
2
2
|
import { AuthKitProvider, useAuth } from './authkit-provider.js';
|
|
3
|
-
|
|
3
|
+
import { useAccessToken } from './useAccessToken.js';
|
|
4
|
+
export { Impersonation, AuthKitProvider, useAuth, useAccessToken };
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { useCallback, useEffect, useReducer, useRef } from 'react';
|
|
2
|
+
import { getAccessTokenAction, refreshAccessTokenAction } from '../actions.js';
|
|
3
|
+
import { useAuth } from './authkit-provider.js';
|
|
4
|
+
const TOKEN_EXPIRY_BUFFER_SECONDS = 60;
|
|
5
|
+
const RETRY_DELAY = 5 * 60 * 1000;
|
|
6
|
+
function tokenReducer(state, action) {
|
|
7
|
+
switch (action.type) {
|
|
8
|
+
case 'FETCH_START':
|
|
9
|
+
return { ...state, loading: true, error: null };
|
|
10
|
+
case 'FETCH_SUCCESS':
|
|
11
|
+
return { ...state, loading: false, token: action.token };
|
|
12
|
+
case 'FETCH_ERROR':
|
|
13
|
+
return { ...state, loading: false, error: action.error };
|
|
14
|
+
case 'RESET':
|
|
15
|
+
return { ...state, token: undefined, loading: false, error: null };
|
|
16
|
+
// istanbul ignore next
|
|
17
|
+
default:
|
|
18
|
+
return state;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function parseToken(token) {
|
|
22
|
+
// istanbul ignore next
|
|
23
|
+
if (!token) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const parts = token.split('.');
|
|
28
|
+
if (parts.length !== 3) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const payload = JSON.parse(atob(parts[1]));
|
|
32
|
+
const now = Math.floor(Date.now() / 1000);
|
|
33
|
+
return {
|
|
34
|
+
payload,
|
|
35
|
+
expiresAt: payload.exp,
|
|
36
|
+
isExpiring: payload.exp < now + TOKEN_EXPIRY_BUFFER_SECONDS,
|
|
37
|
+
timeUntilExpiry: payload.exp - now,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (_a) {
|
|
41
|
+
// istanbul ignore next
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A hook that manages access tokens with automatic refresh.
|
|
47
|
+
*/
|
|
48
|
+
export function useAccessToken() {
|
|
49
|
+
const { user, sessionId, refreshAuth } = useAuth();
|
|
50
|
+
const userId = user === null || user === void 0 ? void 0 : user.id;
|
|
51
|
+
const [state, dispatch] = useReducer(tokenReducer, {
|
|
52
|
+
token: undefined,
|
|
53
|
+
loading: false,
|
|
54
|
+
error: null,
|
|
55
|
+
});
|
|
56
|
+
const refreshTimeoutRef = useRef();
|
|
57
|
+
const fetchingRef = useRef(false);
|
|
58
|
+
const clearRefreshTimeout = useCallback(() => {
|
|
59
|
+
if (refreshTimeoutRef.current) {
|
|
60
|
+
clearTimeout(refreshTimeoutRef.current);
|
|
61
|
+
refreshTimeoutRef.current = undefined;
|
|
62
|
+
}
|
|
63
|
+
}, []);
|
|
64
|
+
const updateToken = useCallback(async () => {
|
|
65
|
+
if (fetchingRef.current) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
fetchingRef.current = true;
|
|
69
|
+
dispatch({ type: 'FETCH_START' });
|
|
70
|
+
try {
|
|
71
|
+
let token = await getAccessTokenAction();
|
|
72
|
+
if (token) {
|
|
73
|
+
const tokenData = parseToken(token);
|
|
74
|
+
if (!tokenData || tokenData.isExpiring) {
|
|
75
|
+
token = await refreshAccessTokenAction();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
dispatch({ type: 'FETCH_SUCCESS', token });
|
|
79
|
+
if (token) {
|
|
80
|
+
const tokenData = parseToken(token);
|
|
81
|
+
if (tokenData) {
|
|
82
|
+
const delay = Math.max((tokenData.timeUntilExpiry - TOKEN_EXPIRY_BUFFER_SECONDS) * 1000, 0);
|
|
83
|
+
clearRefreshTimeout();
|
|
84
|
+
refreshTimeoutRef.current = setTimeout(updateToken, delay);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return token;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
dispatch({ type: 'FETCH_ERROR', error: error instanceof Error ? error : new Error(String(error)) });
|
|
91
|
+
refreshTimeoutRef.current = setTimeout(updateToken, RETRY_DELAY);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
fetchingRef.current = false;
|
|
95
|
+
}
|
|
96
|
+
}, [clearRefreshTimeout]);
|
|
97
|
+
const refresh = useCallback(async () => {
|
|
98
|
+
if (fetchingRef.current)
|
|
99
|
+
return;
|
|
100
|
+
fetchingRef.current = true;
|
|
101
|
+
dispatch({ type: 'FETCH_START' });
|
|
102
|
+
try {
|
|
103
|
+
await refreshAuth();
|
|
104
|
+
const token = await getAccessTokenAction();
|
|
105
|
+
dispatch({ type: 'FETCH_SUCCESS', token });
|
|
106
|
+
if (token) {
|
|
107
|
+
const tokenData = parseToken(token);
|
|
108
|
+
if (tokenData) {
|
|
109
|
+
const delay = Math.max((tokenData.timeUntilExpiry - TOKEN_EXPIRY_BUFFER_SECONDS) * 1000, 0);
|
|
110
|
+
clearRefreshTimeout();
|
|
111
|
+
refreshTimeoutRef.current = setTimeout(updateToken, delay);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return token;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
118
|
+
dispatch({ type: 'FETCH_ERROR', error: typedError });
|
|
119
|
+
refreshTimeoutRef.current = setTimeout(updateToken, RETRY_DELAY);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
fetchingRef.current = false;
|
|
123
|
+
}
|
|
124
|
+
}, [refreshAuth, clearRefreshTimeout, updateToken]);
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
if (!user) {
|
|
127
|
+
dispatch({ type: 'RESET' });
|
|
128
|
+
clearRefreshTimeout();
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
updateToken();
|
|
132
|
+
return clearRefreshTimeout;
|
|
133
|
+
}, [userId, sessionId, updateToken, clearRefreshTimeout]);
|
|
134
|
+
return {
|
|
135
|
+
accessToken: state.token,
|
|
136
|
+
loading: state.loading,
|
|
137
|
+
error: state.error,
|
|
138
|
+
refresh,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=useAccessToken.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAccessToken.js","sourceRoot":"","sources":["../../../src/components/useAccessToken.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/session.js
CHANGED
|
@@ -71,6 +71,7 @@ async function updateSessionMiddleware(request, debug, middlewareAuth, redirectU
|
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
async function updateSession(request, options = { debug: false }) {
|
|
74
|
+
var _a, _b;
|
|
74
75
|
const session = await getSessionFromCookie(request);
|
|
75
76
|
// Since we're setting the headers in the response, we need to create a new Headers object without copying
|
|
76
77
|
// the request headers.
|
|
@@ -145,6 +146,7 @@ async function updateSession(request, options = { debug: false }) {
|
|
|
145
146
|
newRequestHeaders.append('Set-Cookie', `${cookieName}=${encryptedSession}; ${getCookieOptions(request.url, true)}`);
|
|
146
147
|
newRequestHeaders.set(sessionHeaderName, encryptedSession);
|
|
147
148
|
const { sid: sessionId, org_id: organizationId, role, permissions, entitlements, } = decodeJwt(accessToken);
|
|
149
|
+
(_a = options.onSessionRefreshSuccess) === null || _a === void 0 ? void 0 : _a.call(options, { accessToken, user, impersonator, organizationId });
|
|
148
150
|
return {
|
|
149
151
|
session: {
|
|
150
152
|
sessionId,
|
|
@@ -166,6 +168,7 @@ async function updateSession(request, options = { debug: false }) {
|
|
|
166
168
|
// When we need to delete a cookie, return it as a header as you can't delete cookies from edge middleware
|
|
167
169
|
const deleteCookie = `${cookieName}=; Expires=${new Date(0).toUTCString()}; ${getCookieOptions(request.url, true, true)}`;
|
|
168
170
|
newRequestHeaders.append('Set-Cookie', deleteCookie);
|
|
171
|
+
(_b = options.onSessionRefreshError) === null || _b === void 0 ? void 0 : _b.call(options, { error: e, request });
|
|
169
172
|
return {
|
|
170
173
|
session: { user: null },
|
|
171
174
|
headers: newRequestHeaders,
|
|
@@ -261,15 +264,6 @@ async function withAuth(options) {
|
|
|
261
264
|
accessToken: session.accessToken,
|
|
262
265
|
};
|
|
263
266
|
}
|
|
264
|
-
async function terminateSession({ returnTo } = {}) {
|
|
265
|
-
const { sessionId } = await withAuth();
|
|
266
|
-
if (sessionId) {
|
|
267
|
-
redirect(getWorkOS().userManagement.getLogoutUrl({ sessionId, returnTo }));
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
redirect(returnTo !== null && returnTo !== void 0 ? returnTo : '/');
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
267
|
async function verifyAccessToken(accessToken) {
|
|
274
268
|
try {
|
|
275
269
|
await jwtVerify(accessToken, JWKS());
|
|
@@ -355,5 +349,5 @@ export async function saveSession(sessionOrResponse, request) {
|
|
|
355
349
|
const url = typeof request === 'string' ? request : request.url;
|
|
356
350
|
nextCookies.set(cookieName, encryptedSession, getCookieOptions(url));
|
|
357
351
|
}
|
|
358
|
-
export { encryptSession, refreshSession,
|
|
352
|
+
export { encryptSession, refreshSession, updateSession, updateSessionMiddleware, withAuth };
|
|
359
353
|
//# sourceMappingURL=session.js.map
|
package/dist/esm/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,3 +17,13 @@ export declare const refreshAuthAction: ({ ensureSignedIn, organizationId, }: {
|
|
|
17
17
|
organizationId?: string | undefined;
|
|
18
18
|
}) => Promise<Omit<UserInfo | NoUserInfo, "accessToken">>;
|
|
19
19
|
export declare const switchToOrganizationAction: (organizationId: string, options?: SwitchToOrganizationOptions) => Promise<Omit<UserInfo, "accessToken">>;
|
|
20
|
+
/**
|
|
21
|
+
* This action is used to get the access token from the auth object.
|
|
22
|
+
* It is used to fetch the access token from the server.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getAccessTokenAction(): Promise<string | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* This action is used to refresh the access token from the auth object.
|
|
27
|
+
* It is used to fetch the access token from the server.
|
|
28
|
+
*/
|
|
29
|
+
export declare function refreshAccessTokenAction(): Promise<string | undefined>;
|
package/dist/esm/types/auth.d.ts
CHANGED
|
@@ -9,6 +9,11 @@ export declare function getSignUpUrl({ organizationId, loginHint, redirectUri, }
|
|
|
9
9
|
loginHint?: string;
|
|
10
10
|
redirectUri?: string;
|
|
11
11
|
}): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Sign out the user and delete the session cookie.
|
|
14
|
+
* @param options Options for signing out.
|
|
15
|
+
* @param options.returnTo The URL to redirect to after signing out.
|
|
16
|
+
*/
|
|
12
17
|
export declare function signOut({ returnTo }?: {
|
|
13
18
|
returnTo?: string;
|
|
14
19
|
}): Promise<void>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { Impersonation } from './impersonation.js';
|
|
2
2
|
import { AuthKitProvider, useAuth } from './authkit-provider.js';
|
|
3
|
-
|
|
3
|
+
import { useAccessToken } from './useAccessToken.js';
|
|
4
|
+
export { Impersonation, AuthKitProvider, useAuth, useAccessToken };
|
|
@@ -70,6 +70,16 @@ export interface AuthkitOptions {
|
|
|
70
70
|
debug?: boolean;
|
|
71
71
|
redirectUri?: string;
|
|
72
72
|
screenHint?: 'sign-up' | 'sign-in';
|
|
73
|
+
onSessionRefreshSuccess?: (data: {
|
|
74
|
+
accessToken: string;
|
|
75
|
+
user: User;
|
|
76
|
+
impersonator?: Impersonator;
|
|
77
|
+
organizationId?: string;
|
|
78
|
+
}) => void | Promise<void>;
|
|
79
|
+
onSessionRefreshError?: (params: {
|
|
80
|
+
error?: unknown;
|
|
81
|
+
request: NextRequest;
|
|
82
|
+
}) => void | Promise<void>;
|
|
73
83
|
}
|
|
74
84
|
export interface AuthkitResponse {
|
|
75
85
|
session: UserInfo | NoUserInfo;
|
|
@@ -18,9 +18,6 @@ declare function withAuth(options: {
|
|
|
18
18
|
declare function withAuth(options?: {
|
|
19
19
|
ensureSignedIn?: true | false;
|
|
20
20
|
}): Promise<UserInfo | NoUserInfo>;
|
|
21
|
-
declare function terminateSession({ returnTo }?: {
|
|
22
|
-
returnTo?: string;
|
|
23
|
-
}): Promise<void>;
|
|
24
21
|
/**
|
|
25
22
|
* Saves a WorkOS session to a cookie for use with AuthKit.
|
|
26
23
|
*
|
|
@@ -50,4 +47,4 @@ declare function terminateSession({ returnTo }?: {
|
|
|
50
47
|
* await saveSession(authResponse, 'https://example.com/callback');
|
|
51
48
|
*/
|
|
52
49
|
export declare function saveSession(sessionOrResponse: Session | AuthenticationResponse, request: NextRequest | string): Promise<void>;
|
|
53
|
-
export { encryptSession, refreshSession,
|
|
50
|
+
export { encryptSession, refreshSession, updateSession, updateSessionMiddleware, withAuth };
|
package/dist/esm/workos.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WorkOS } from '@workos-inc/node';
|
|
2
2
|
import { WORKOS_API_HOSTNAME, WORKOS_API_KEY, WORKOS_API_HTTPS, WORKOS_API_PORT } from './env-variables.js';
|
|
3
3
|
import { lazy } from './utils.js';
|
|
4
|
-
export const VERSION = '2.
|
|
4
|
+
export const VERSION = '2.3.1';
|
|
5
5
|
const options = {
|
|
6
6
|
apiHostname: WORKOS_API_HOSTNAME,
|
|
7
7
|
https: WORKOS_API_HTTPS ? WORKOS_API_HTTPS === 'true' : true,
|
package/package.json
CHANGED
package/src/actions.ts
CHANGED
|
@@ -51,3 +51,21 @@ export const refreshAuthAction = async ({
|
|
|
51
51
|
export const switchToOrganizationAction = async (organizationId: string, options?: SwitchToOrganizationOptions) => {
|
|
52
52
|
return sanitize(await switchToOrganization(organizationId, options));
|
|
53
53
|
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* This action is used to get the access token from the auth object.
|
|
57
|
+
* It is used to fetch the access token from the server.
|
|
58
|
+
*/
|
|
59
|
+
export async function getAccessTokenAction() {
|
|
60
|
+
const auth = await withAuth();
|
|
61
|
+
return auth.accessToken;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* This action is used to refresh the access token from the auth object.
|
|
66
|
+
* It is used to fetch the access token from the server.
|
|
67
|
+
*/
|
|
68
|
+
export async function refreshAccessTokenAction() {
|
|
69
|
+
const auth = await refreshSession();
|
|
70
|
+
return auth.accessToken;
|
|
71
|
+
}
|
package/src/auth.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
import { revalidatePath, revalidateTag } from 'next/cache';
|
|
4
4
|
import { cookies, headers } from 'next/headers';
|
|
5
5
|
import { redirect } from 'next/navigation';
|
|
6
|
-
import { WORKOS_COOKIE_NAME } from './env-variables.js';
|
|
6
|
+
import { WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_NAME } from './env-variables.js';
|
|
7
7
|
import { getAuthorizationUrl } from './get-authorization-url.js';
|
|
8
8
|
import { SwitchToOrganizationOptions, UserInfo } from './interfaces.js';
|
|
9
|
-
import { refreshSession,
|
|
10
|
-
import {
|
|
9
|
+
import { refreshSession, withAuth } from './session.js';
|
|
10
|
+
import { getWorkOS } from './workos.js';
|
|
11
11
|
export async function getSignInUrl({
|
|
12
12
|
organizationId,
|
|
13
13
|
loginHint,
|
|
@@ -24,12 +24,29 @@ export async function getSignUpUrl({
|
|
|
24
24
|
return getAuthorizationUrl({ organizationId, screenHint: 'sign-up', loginHint, redirectUri });
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Sign out the user and delete the session cookie.
|
|
29
|
+
* @param options Options for signing out.
|
|
30
|
+
* @param options.returnTo The URL to redirect to after signing out.
|
|
31
|
+
*/
|
|
27
32
|
export async function signOut({ returnTo }: { returnTo?: string } = {}) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
let sessionId: string | undefined;
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const { sessionId: sid } = await withAuth();
|
|
37
|
+
sessionId = sid;
|
|
38
|
+
} finally {
|
|
39
|
+
const nextCookies = await cookies();
|
|
40
|
+
const cookieName = WORKOS_COOKIE_NAME || 'wos-session';
|
|
41
|
+
const domain = WORKOS_COOKIE_DOMAIN || /* istanbul ignore next */ undefined;
|
|
42
|
+
nextCookies.delete({ name: cookieName, domain, path: '/' });
|
|
43
|
+
|
|
44
|
+
if (sessionId) {
|
|
45
|
+
redirect(getWorkOS().userManagement.getLogoutUrl({ sessionId, returnTo }));
|
|
46
|
+
} else {
|
|
47
|
+
redirect(returnTo ?? '/');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
33
50
|
}
|
|
34
51
|
|
|
35
52
|
export async function switchToOrganization(
|
package/src/components/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Impersonation } from './impersonation.js';
|
|
2
2
|
import { AuthKitProvider, useAuth } from './authkit-provider.js';
|
|
3
|
+
import { useAccessToken } from './useAccessToken.js';
|
|
3
4
|
|
|
4
|
-
export { Impersonation, AuthKitProvider, useAuth };
|
|
5
|
+
export { Impersonation, AuthKitProvider, useAuth, useAccessToken };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { useCallback, useEffect, useReducer, useRef } from 'react';
|
|
2
|
+
import { getAccessTokenAction, refreshAccessTokenAction } from '../actions.js';
|
|
3
|
+
import { useAuth } from './authkit-provider.js';
|
|
4
|
+
|
|
5
|
+
const TOKEN_EXPIRY_BUFFER_SECONDS = 60;
|
|
6
|
+
const RETRY_DELAY = 5 * 60 * 1000;
|
|
7
|
+
|
|
8
|
+
interface TokenState {
|
|
9
|
+
token: string | undefined;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
error: Error | null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
type TokenAction =
|
|
15
|
+
| { type: 'FETCH_START' }
|
|
16
|
+
| { type: 'FETCH_SUCCESS'; token: string | undefined }
|
|
17
|
+
| { type: 'FETCH_ERROR'; error: Error }
|
|
18
|
+
| { type: 'RESET' };
|
|
19
|
+
|
|
20
|
+
function tokenReducer(state: TokenState, action: TokenAction): TokenState {
|
|
21
|
+
switch (action.type) {
|
|
22
|
+
case 'FETCH_START':
|
|
23
|
+
return { ...state, loading: true, error: null };
|
|
24
|
+
case 'FETCH_SUCCESS':
|
|
25
|
+
return { ...state, loading: false, token: action.token };
|
|
26
|
+
case 'FETCH_ERROR':
|
|
27
|
+
return { ...state, loading: false, error: action.error };
|
|
28
|
+
case 'RESET':
|
|
29
|
+
return { ...state, token: undefined, loading: false, error: null };
|
|
30
|
+
// istanbul ignore next
|
|
31
|
+
default:
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function parseToken(token: string | undefined) {
|
|
37
|
+
// istanbul ignore next
|
|
38
|
+
if (!token) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const parts = token.split('.');
|
|
44
|
+
if (parts.length !== 3) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const payload = JSON.parse(atob(parts[1]));
|
|
49
|
+
const now = Math.floor(Date.now() / 1000);
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
payload,
|
|
53
|
+
expiresAt: payload.exp,
|
|
54
|
+
isExpiring: payload.exp < now + TOKEN_EXPIRY_BUFFER_SECONDS,
|
|
55
|
+
timeUntilExpiry: payload.exp - now,
|
|
56
|
+
};
|
|
57
|
+
} catch {
|
|
58
|
+
// istanbul ignore next
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A hook that manages access tokens with automatic refresh.
|
|
65
|
+
*/
|
|
66
|
+
export function useAccessToken() {
|
|
67
|
+
const { user, sessionId, refreshAuth } = useAuth();
|
|
68
|
+
const userId = user?.id;
|
|
69
|
+
const [state, dispatch] = useReducer(tokenReducer, {
|
|
70
|
+
token: undefined,
|
|
71
|
+
loading: false,
|
|
72
|
+
error: null,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const refreshTimeoutRef = useRef<ReturnType<typeof setTimeout>>();
|
|
76
|
+
const fetchingRef = useRef(false);
|
|
77
|
+
|
|
78
|
+
const clearRefreshTimeout = useCallback(() => {
|
|
79
|
+
if (refreshTimeoutRef.current) {
|
|
80
|
+
clearTimeout(refreshTimeoutRef.current);
|
|
81
|
+
refreshTimeoutRef.current = undefined;
|
|
82
|
+
}
|
|
83
|
+
}, []);
|
|
84
|
+
|
|
85
|
+
const updateToken = useCallback(async () => {
|
|
86
|
+
if (fetchingRef.current) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
fetchingRef.current = true;
|
|
91
|
+
dispatch({ type: 'FETCH_START' });
|
|
92
|
+
try {
|
|
93
|
+
let token = await getAccessTokenAction();
|
|
94
|
+
if (token) {
|
|
95
|
+
const tokenData = parseToken(token);
|
|
96
|
+
if (!tokenData || tokenData.isExpiring) {
|
|
97
|
+
token = await refreshAccessTokenAction();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
dispatch({ type: 'FETCH_SUCCESS', token });
|
|
102
|
+
|
|
103
|
+
if (token) {
|
|
104
|
+
const tokenData = parseToken(token);
|
|
105
|
+
if (tokenData) {
|
|
106
|
+
const delay = Math.max((tokenData.timeUntilExpiry - TOKEN_EXPIRY_BUFFER_SECONDS) * 1000, 0);
|
|
107
|
+
clearRefreshTimeout();
|
|
108
|
+
refreshTimeoutRef.current = setTimeout(updateToken, delay);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return token;
|
|
113
|
+
} catch (error) {
|
|
114
|
+
dispatch({ type: 'FETCH_ERROR', error: error instanceof Error ? error : new Error(String(error)) });
|
|
115
|
+
refreshTimeoutRef.current = setTimeout(updateToken, RETRY_DELAY);
|
|
116
|
+
} finally {
|
|
117
|
+
fetchingRef.current = false;
|
|
118
|
+
}
|
|
119
|
+
}, [clearRefreshTimeout]);
|
|
120
|
+
|
|
121
|
+
const refresh = useCallback(async () => {
|
|
122
|
+
if (fetchingRef.current) return;
|
|
123
|
+
|
|
124
|
+
fetchingRef.current = true;
|
|
125
|
+
dispatch({ type: 'FETCH_START' });
|
|
126
|
+
|
|
127
|
+
try {
|
|
128
|
+
await refreshAuth();
|
|
129
|
+
const token = await getAccessTokenAction();
|
|
130
|
+
|
|
131
|
+
dispatch({ type: 'FETCH_SUCCESS', token });
|
|
132
|
+
|
|
133
|
+
if (token) {
|
|
134
|
+
const tokenData = parseToken(token);
|
|
135
|
+
if (tokenData) {
|
|
136
|
+
const delay = Math.max((tokenData.timeUntilExpiry - TOKEN_EXPIRY_BUFFER_SECONDS) * 1000, 0);
|
|
137
|
+
clearRefreshTimeout();
|
|
138
|
+
refreshTimeoutRef.current = setTimeout(updateToken, delay);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return token;
|
|
143
|
+
} catch (error) {
|
|
144
|
+
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
145
|
+
dispatch({ type: 'FETCH_ERROR', error: typedError });
|
|
146
|
+
refreshTimeoutRef.current = setTimeout(updateToken, RETRY_DELAY);
|
|
147
|
+
} finally {
|
|
148
|
+
fetchingRef.current = false;
|
|
149
|
+
}
|
|
150
|
+
}, [refreshAuth, clearRefreshTimeout, updateToken]);
|
|
151
|
+
|
|
152
|
+
useEffect(() => {
|
|
153
|
+
if (!user) {
|
|
154
|
+
dispatch({ type: 'RESET' });
|
|
155
|
+
clearRefreshTimeout();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
updateToken();
|
|
159
|
+
|
|
160
|
+
return clearRefreshTimeout;
|
|
161
|
+
}, [userId, sessionId, updateToken, clearRefreshTimeout]);
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
accessToken: state.token,
|
|
165
|
+
loading: state.loading,
|
|
166
|
+
error: state.error,
|
|
167
|
+
refresh,
|
|
168
|
+
};
|
|
169
|
+
}
|
package/src/interfaces.ts
CHANGED
|
@@ -76,6 +76,13 @@ export interface AuthkitOptions {
|
|
|
76
76
|
debug?: boolean;
|
|
77
77
|
redirectUri?: string;
|
|
78
78
|
screenHint?: 'sign-up' | 'sign-in';
|
|
79
|
+
onSessionRefreshSuccess?: (data: {
|
|
80
|
+
accessToken: string;
|
|
81
|
+
user: User;
|
|
82
|
+
impersonator?: Impersonator;
|
|
83
|
+
organizationId?: string;
|
|
84
|
+
}) => void | Promise<void>;
|
|
85
|
+
onSessionRefreshError?: (params: { error?: unknown; request: NextRequest }) => void | Promise<void>;
|
|
79
86
|
}
|
|
80
87
|
|
|
81
88
|
export interface AuthkitResponse {
|
package/src/session.ts
CHANGED
|
@@ -219,6 +219,8 @@ async function updateSession(
|
|
|
219
219
|
entitlements,
|
|
220
220
|
} = decodeJwt<AccessToken>(accessToken);
|
|
221
221
|
|
|
222
|
+
options.onSessionRefreshSuccess?.({ accessToken, user, impersonator, organizationId });
|
|
223
|
+
|
|
222
224
|
return {
|
|
223
225
|
session: {
|
|
224
226
|
sessionId,
|
|
@@ -241,6 +243,8 @@ async function updateSession(
|
|
|
241
243
|
const deleteCookie = `${cookieName}=; Expires=${new Date(0).toUTCString()}; ${getCookieOptions(request.url, true, true)}`;
|
|
242
244
|
newRequestHeaders.append('Set-Cookie', deleteCookie);
|
|
243
245
|
|
|
246
|
+
options.onSessionRefreshError?.({ error: e, request });
|
|
247
|
+
|
|
244
248
|
return {
|
|
245
249
|
session: { user: null },
|
|
246
250
|
headers: newRequestHeaders,
|
|
@@ -382,15 +386,6 @@ async function withAuth(options?: { ensureSignedIn?: boolean }): Promise<UserInf
|
|
|
382
386
|
};
|
|
383
387
|
}
|
|
384
388
|
|
|
385
|
-
async function terminateSession({ returnTo }: { returnTo?: string } = {}) {
|
|
386
|
-
const { sessionId } = await withAuth();
|
|
387
|
-
if (sessionId) {
|
|
388
|
-
redirect(getWorkOS().userManagement.getLogoutUrl({ sessionId, returnTo }));
|
|
389
|
-
} else {
|
|
390
|
-
redirect(returnTo ?? '/');
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
389
|
async function verifyAccessToken(accessToken: string) {
|
|
395
390
|
try {
|
|
396
391
|
await jwtVerify(accessToken, JWKS());
|
|
@@ -491,4 +486,4 @@ export async function saveSession(
|
|
|
491
486
|
nextCookies.set(cookieName, encryptedSession, getCookieOptions(url));
|
|
492
487
|
}
|
|
493
488
|
|
|
494
|
-
export { encryptSession, refreshSession,
|
|
489
|
+
export { encryptSession, refreshSession, updateSession, updateSessionMiddleware, withAuth };
|
package/src/workos.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { WorkOS } from '@workos-inc/node';
|
|
|
2
2
|
import { WORKOS_API_HOSTNAME, WORKOS_API_KEY, WORKOS_API_HTTPS, WORKOS_API_PORT } from './env-variables.js';
|
|
3
3
|
import { lazy } from './utils.js';
|
|
4
4
|
|
|
5
|
-
export const VERSION = '2.
|
|
5
|
+
export const VERSION = '2.3.1';
|
|
6
6
|
|
|
7
7
|
const options = {
|
|
8
8
|
apiHostname: WORKOS_API_HOSTNAME,
|