@workos-inc/authkit-nextjs 0.4.1 → 0.5.0

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.
Files changed (48) hide show
  1. package/README.md +47 -8
  2. package/package.json +4 -3
  3. package/src/auth.ts +6 -2
  4. package/src/cookie.ts +6 -1
  5. package/src/get-authorization-url.ts +5 -1
  6. package/src/index.ts +2 -1
  7. package/src/interfaces.ts +15 -0
  8. package/src/middleware.ts +6 -6
  9. package/src/session.ts +40 -5
  10. package/dist/cjs/auth.d.ts +0 -3
  11. package/dist/cjs/auth.js +0 -17
  12. package/dist/cjs/auth.js.map +0 -1
  13. package/dist/cjs/authkit-callback-route.d.ts +0 -3
  14. package/dist/cjs/authkit-callback-route.js +0 -58
  15. package/dist/cjs/authkit-callback-route.js.map +0 -1
  16. package/dist/cjs/button.d.ts +0 -3
  17. package/dist/cjs/button.js +0 -25
  18. package/dist/cjs/button.js.map +0 -1
  19. package/dist/cjs/cookie.d.ts +0 -8
  20. package/dist/cjs/cookie.js +0 -13
  21. package/dist/cjs/cookie.js.map +0 -1
  22. package/dist/cjs/env-variables.d.ts +0 -5
  23. package/dist/cjs/env-variables.js +0 -22
  24. package/dist/cjs/env-variables.js.map +0 -1
  25. package/dist/cjs/get-authorization-url.d.ts +0 -2
  26. package/dist/cjs/get-authorization-url.js +0 -15
  27. package/dist/cjs/get-authorization-url.js.map +0 -1
  28. package/dist/cjs/impersonation.d.ts +0 -6
  29. package/dist/cjs/impersonation.js +0 -119
  30. package/dist/cjs/impersonation.js.map +0 -1
  31. package/dist/cjs/index.d.ts +0 -6
  32. package/dist/cjs/index.js +0 -15
  33. package/dist/cjs/index.js.map +0 -1
  34. package/dist/cjs/interfaces.d.ts +0 -33
  35. package/dist/cjs/interfaces.js +0 -3
  36. package/dist/cjs/interfaces.js.map +0 -1
  37. package/dist/cjs/middleware.d.ts +0 -6
  38. package/dist/cjs/middleware.js +0 -11
  39. package/dist/cjs/middleware.js.map +0 -1
  40. package/dist/cjs/min-max-button.d.ts +0 -7
  41. package/dist/cjs/min-max-button.js +0 -15
  42. package/dist/cjs/min-max-button.js.map +0 -1
  43. package/dist/cjs/session.d.ts +0 -12
  44. package/dist/cjs/session.js +0 -134
  45. package/dist/cjs/session.js.map +0 -1
  46. package/dist/cjs/workos.d.ts +0 -3
  47. package/dist/cjs/workos.js +0 -10
  48. package/dist/cjs/workos.js.map +0 -1
package/README.md CHANGED
@@ -65,8 +65,8 @@ import { authkitMiddleware } from '@workos-inc/authkit-nextjs';
65
65
  export default authkitMiddleware();
66
66
 
67
67
  // Match against pages that require auth
68
- // Leave this out if you want auth on every page in your application
69
- export const config = { matcher: ['/admin'] };
68
+ // Leave this out if you want auth on every resource (including images, css etc.)
69
+ export const config = { matcher: ['/', '/admin'] };
70
70
  ```
71
71
 
72
72
  ## Usage
@@ -77,16 +77,28 @@ For pages where you want to display a signed-in and signed-out view, use `getUse
77
77
 
78
78
  ```jsx
79
79
  import Link from 'next/link';
80
- import { getSignInUrl, getUser, signOut } from '@workos-inc/authkit-nextjs';
80
+ import { getSignInUrl, getSignUpUrl, getUser, signOut } from '@workos-inc/authkit-nextjs';
81
81
 
82
82
  export default async function HomePage() {
83
83
  // Retrieves the user from the session or returns `null` if no user is signed in
84
84
  const { user } = await getUser();
85
85
 
86
- // Get the URL to redirect the user to AuthKit to sign in
87
- const signInUrl = await getSignInUrl();
86
+ if (!user) {
87
+ // Get the URL to redirect the user to AuthKit to sign in
88
+ const signInUrl = await getSignInUrl();
88
89
 
89
- return user ? (
90
+ // Get the URL to redirect the user to AuthKit to sign up
91
+ const signUpUrl = await getSignUpUrl();
92
+
93
+ return (
94
+ <>
95
+ <Link href={signInUrl}>Log in</Link>
96
+ <Link href={signUpUrl}>Sign Up</Link>
97
+ </>
98
+ );
99
+ }
100
+
101
+ return (
90
102
  <form
91
103
  action={async () => {
92
104
  'use server';
@@ -96,8 +108,6 @@ export default async function HomePage() {
96
108
  <p>Welcome back {user?.firstName && `, ${user?.firstName}`}</p>
97
109
  <button type="submit">Sign out</button>
98
110
  </form>
99
- ) : (
100
- <Link href={signInUrl}>Sign in</Link>
101
111
  );
102
112
  }
103
113
  ```
@@ -112,6 +122,29 @@ const { user } = await getUser({ ensureSignedIn: true });
112
122
 
113
123
  Enabling `ensureSignedIn` will redirect users to AuthKit if they attempt to access the page without being authenticated.
114
124
 
125
+ ### Middleware auth
126
+
127
+ The default behavior of this library is to request authentication via the `getUser` method on a per-page basis. There are some use cases where you don't want to call `getUser` (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:
128
+
129
+ ```ts
130
+ import { authkitMiddleware } from '@workos-inc/authkit-nextjs';
131
+
132
+ export default authkitMiddleware({
133
+ middlewareAuth: {
134
+ enabled: true,
135
+ unauthenticatedPaths: ['/', '/about'],
136
+ },
137
+ });
138
+
139
+ // Match against pages that require auth
140
+ // Leave this out if you want auth on every resource (including images, css etc.)
141
+ export const config = { matcher: ['/', '/admin/:path*', '/about'] };
142
+ ```
143
+
144
+ In the above example the `/admin` page will require a user to be signed in, whereas `/` and `/about` can be accessed without signing in.
145
+
146
+ `unauthenticatedPaths` uses the same glob logic as the [Next.js matcher](https://nextjs.org/docs/pages/building-your-application/routing/middleware#matcher).
147
+
115
148
  ### Signing out
116
149
 
117
150
  Use the `signOut` method to sign out the current logged in user and redirect to your app's homepage. The homepage redirect is set in your WorkOS dashboard settings under "Redirect".
@@ -143,3 +176,9 @@ import { authkitMiddleware } from '@workos-inc/authkit-nextjs';
143
176
 
144
177
  export default authkitMiddleware({ debug: true });
145
178
  ```
179
+
180
+ ### Troubleshooting
181
+
182
+ #### NEXT_REDIRECT error when using try/catch blocks
183
+
184
+ Wrapping a `getUser({ ensureSignedIn: true })` call in a try/catch block will cause a `NEXT_REDIRECT` error. This is because `getUser` will attempt to redirect the user to AuthKit if no session is detected and redirects in Next must be [called outside a try/catch](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations#redirecting).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workos-inc/authkit-nextjs",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Authentication and session helpers for using WorkOS & AuthKit with Next.js",
5
5
  "sideEffects": false,
6
6
  "type": "commonjs",
@@ -23,9 +23,10 @@
23
23
  "test": "echo \"Error: no test specified\" && exit 1"
24
24
  },
25
25
  "dependencies": {
26
- "@workos-inc/node": "^6.7.0",
26
+ "@workos-inc/node": "^6.8.0",
27
27
  "iron-session": "^8.0.1",
28
- "jose": "^5.2.3"
28
+ "jose": "^5.2.3",
29
+ "path-to-regexp": "^6.2.2"
29
30
  },
30
31
  "peerDependencies": {
31
32
  "next": "^13.5.4 || ^14.0.3",
package/src/auth.ts CHANGED
@@ -4,7 +4,11 @@ import { cookieName } from './cookie.js';
4
4
  import { terminateSession } from './session.js';
5
5
 
6
6
  async function getSignInUrl() {
7
- return getAuthorizationUrl();
7
+ return getAuthorizationUrl({ screenHint: 'sign-in' });
8
+ }
9
+
10
+ async function getSignUpUrl() {
11
+ return getAuthorizationUrl({ screenHint: 'sign-up' });
8
12
  }
9
13
 
10
14
  async function signOut() {
@@ -12,4 +16,4 @@ async function signOut() {
12
16
  await terminateSession();
13
17
  }
14
18
 
15
- export { getSignInUrl, signOut };
19
+ export { getSignInUrl, getSignUpUrl, signOut };
package/src/cookie.ts CHANGED
@@ -1,8 +1,13 @@
1
+ import { WORKOS_REDIRECT_URI } from './env-variables.js';
2
+
3
+ const redirectUrl = new URL(WORKOS_REDIRECT_URI);
4
+ const isSecureProtocol = redirectUrl.protocol === 'https:';
5
+
1
6
  const cookieName = 'wos-session';
2
7
  const cookieOptions = {
3
8
  path: '/',
4
9
  httpOnly: true,
5
- secure: true,
10
+ secure: isSecureProtocol,
6
11
  sameSite: 'lax' as const,
7
12
  };
8
13
 
@@ -1,12 +1,16 @@
1
1
  import { workos } from './workos.js';
2
2
  import { WORKOS_CLIENT_ID, WORKOS_REDIRECT_URI } from './env-variables.js';
3
+ import { GetAuthURLOptions } from './interfaces.js';
4
+
5
+ async function getAuthorizationUrl(options: GetAuthURLOptions = {}) {
6
+ const { returnPathname, screenHint } = options;
3
7
 
4
- async function getAuthorizationUrl(returnPathname?: string) {
5
8
  return workos.userManagement.getAuthorizationUrl({
6
9
  provider: 'authkit',
7
10
  clientId: WORKOS_CLIENT_ID,
8
11
  redirectUri: WORKOS_REDIRECT_URI,
9
12
  state: returnPathname ? btoa(JSON.stringify({ returnPathname })) : undefined,
13
+ screenHint,
10
14
  });
11
15
  }
12
16
 
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { handleAuth } from './authkit-callback-route.js';
2
2
  import { authkitMiddleware } from './middleware.js';
3
3
  import { getUser } from './session.js';
4
- import { getSignInUrl, signOut } from './auth.js';
4
+ import { getSignInUrl, getSignUpUrl, signOut } from './auth.js';
5
5
  import { Impersonation } from './impersonation.js';
6
6
 
7
7
  export {
@@ -10,6 +10,7 @@ export {
10
10
  authkitMiddleware,
11
11
  //
12
12
  getSignInUrl,
13
+ getSignUpUrl,
13
14
  getUser,
14
15
  signOut,
15
16
  //
package/src/interfaces.ts CHANGED
@@ -35,3 +35,18 @@ export interface AccessToken {
35
35
  org_id?: string;
36
36
  role?: string;
37
37
  }
38
+
39
+ export interface GetAuthURLOptions {
40
+ screenHint?: 'sign-up' | 'sign-in';
41
+ returnPathname?: string;
42
+ }
43
+
44
+ export interface AuthkitMiddlewareAuth {
45
+ enabled: boolean;
46
+ unauthenticatedPaths: string[];
47
+ }
48
+
49
+ export interface AuthkitMiddlewareOptions {
50
+ debug?: boolean;
51
+ middlewareAuth?: AuthkitMiddlewareAuth;
52
+ }
package/src/middleware.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { NextMiddleware } from 'next/server';
2
2
  import { updateSession } from './session.js';
3
+ import { AuthkitMiddlewareOptions } from './interfaces.js';
3
4
 
4
- interface AuthkitMiddlewareOptions {
5
- debug?: boolean;
6
- }
7
-
8
- export function authkitMiddleware({ debug = false }: AuthkitMiddlewareOptions = {}): NextMiddleware {
5
+ export function authkitMiddleware({
6
+ debug = false,
7
+ middlewareAuth = { enabled: false, unauthenticatedPaths: [] },
8
+ }: AuthkitMiddlewareOptions = {}): NextMiddleware {
9
9
  return function (request) {
10
- return updateSession(request, debug);
10
+ return updateSession(request, debug, middlewareAuth);
11
11
  };
12
12
  }
package/src/session.ts CHANGED
@@ -5,9 +5,11 @@ import { jwtVerify, createRemoteJWKSet, decodeJwt } from 'jose';
5
5
  import { sealData, unsealData } from 'iron-session';
6
6
  import { cookieName, cookieOptions } from './cookie.js';
7
7
  import { workos } from './workos.js';
8
- import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD } from './env-variables.js';
8
+ import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD, WORKOS_REDIRECT_URI } from './env-variables.js';
9
9
  import { getAuthorizationUrl } from './get-authorization-url.js';
10
- import { AccessToken, NoUserInfo, Session, UserInfo } from './interfaces.js';
10
+ import { AccessToken, AuthkitMiddlewareAuth, NoUserInfo, Session, UserInfo } from './interfaces.js';
11
+
12
+ import { parse, tokensToRegexp } from 'path-to-regexp';
11
13
 
12
14
  const sessionHeaderName = 'x-workos-session';
13
15
  const middlewareHeaderName = 'x-workos-middleware';
@@ -18,7 +20,7 @@ async function encryptSession(session: Session) {
18
20
  return sealData(session, { password: WORKOS_COOKIE_PASSWORD });
19
21
  }
20
22
 
21
- async function updateSession(request: NextRequest, debug: boolean) {
23
+ async function updateSession(request: NextRequest, debug: boolean, middlewareAuth: AuthkitMiddlewareAuth) {
22
24
  const session = await getSessionFromCookie();
23
25
  const newRequestHeaders = new Headers(request.headers);
24
26
 
@@ -30,6 +32,20 @@ async function updateSession(request: NextRequest, debug: boolean) {
30
32
  // Record that the request was routed through the middleware so we can check later for DX purposes
31
33
  newRequestHeaders.set(middlewareHeaderName, 'true');
32
34
 
35
+ newRequestHeaders.delete(sessionHeaderName);
36
+
37
+ const matchedPaths: string[] = middlewareAuth.unauthenticatedPaths.filter((pathGlob) => {
38
+ const pathRegex = getMiddlewareAuthPathRegex(pathGlob);
39
+
40
+ return pathRegex.exec(request.nextUrl.pathname);
41
+ });
42
+
43
+ // If the user is logged out and this path isn't on the allowlist for logged out paths, redirect to AuthKit.
44
+ if (middlewareAuth.enabled && matchedPaths.length === 0 && !session) {
45
+ if (debug) console.log('Unauthenticated user on protected route, redirecting to AuthKit');
46
+ return NextResponse.redirect(await getAuthorizationUrl({ returnPathname: new URL(request.url).pathname }));
47
+ }
48
+
33
49
  // If no session, just continue
34
50
  if (!session) {
35
51
  return NextResponse.next({
@@ -77,12 +93,31 @@ async function updateSession(request: NextRequest, debug: boolean) {
77
93
  return response;
78
94
  } catch (e) {
79
95
  console.warn('Failed to refresh', e);
80
- const response = NextResponse.next();
96
+ const response = NextResponse.next({
97
+ request: { headers: newRequestHeaders },
98
+ });
81
99
  response.cookies.delete(cookieName);
82
100
  return response;
83
101
  }
84
102
  }
85
103
 
104
+ function getMiddlewareAuthPathRegex(pathGlob: string) {
105
+ let regex: string;
106
+
107
+ try {
108
+ // Redirect URI is only used to construct the URL
109
+ const url = new URL(pathGlob, WORKOS_REDIRECT_URI);
110
+ const path = `${url.pathname!}${url.hash || ''}`;
111
+
112
+ const tokens = parse(path);
113
+ regex = tokensToRegexp(tokens).source;
114
+
115
+ return new RegExp(regex);
116
+ } catch (err) {
117
+ throw new Error(`Error parsing routes for middleware auth. Reason: ${err.message}`);
118
+ }
119
+ }
120
+
86
121
  async function getUser(options?: { ensureSignedIn: false }): Promise<UserInfo | NoUserInfo>;
87
122
 
88
123
  async function getUser(options: { ensureSignedIn: true }): Promise<UserInfo>;
@@ -101,7 +136,7 @@ async function getUser({ ensureSignedIn = false } = {}) {
101
136
  if (ensureSignedIn) {
102
137
  const url = headers().get('x-url');
103
138
  const returnPathname = url ? new URL(url).pathname : undefined;
104
- redirect(await getAuthorizationUrl(returnPathname));
139
+ redirect(await getAuthorizationUrl({ returnPathname }));
105
140
  }
106
141
  return { user: null };
107
142
  }
@@ -1,3 +0,0 @@
1
- declare function getSignInUrl(): Promise<string>;
2
- declare function signOut(): Promise<void>;
3
- export { getSignInUrl, signOut };
package/dist/cjs/auth.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.signOut = exports.getSignInUrl = void 0;
4
- const get_authorization_url_js_1 = require("./get-authorization-url.js");
5
- const headers_1 = require("next/headers");
6
- const cookie_js_1 = require("./cookie.js");
7
- const session_js_1 = require("./session.js");
8
- async function getSignInUrl() {
9
- return (0, get_authorization_url_js_1.getAuthorizationUrl)();
10
- }
11
- exports.getSignInUrl = getSignInUrl;
12
- async function signOut() {
13
- (0, headers_1.cookies)().delete(cookie_js_1.cookieName);
14
- await (0, session_js_1.terminateSession)();
15
- }
16
- exports.signOut = signOut;
17
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":";;;AAAA,yEAAiE;AACjE,0CAAuC;AACvC,2CAAyC;AACzC,6CAAgD;AAEhD,KAAK,UAAU,YAAY;IACzB,OAAO,IAAA,8CAAmB,GAAE,CAAC;AAC/B,CAAC;AAOQ,oCAAY;AALrB,KAAK,UAAU,OAAO;IACpB,IAAA,iBAAO,GAAE,CAAC,MAAM,CAAC,sBAAU,CAAC,CAAC;IAC7B,MAAM,IAAA,6BAAgB,GAAE,CAAC;AAC3B,CAAC;AAEsB,0BAAO"}
@@ -1,3 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { HandleAuthOptions } from './interfaces.js';
3
- export declare function handleAuth(options?: HandleAuthOptions): (request: NextRequest) => Promise<NextResponse<unknown>>;
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleAuth = void 0;
4
- const server_1 = require("next/server");
5
- const headers_1 = require("next/headers");
6
- const workos_js_1 = require("./workos.js");
7
- const env_variables_js_1 = require("./env-variables.js");
8
- const session_js_1 = require("./session.js");
9
- const cookie_js_1 = require("./cookie.js");
10
- function handleAuth(options = {}) {
11
- const { returnPathname: returnPathnameOption = '/' } = options;
12
- return async function GET(request) {
13
- const code = request.nextUrl.searchParams.get('code');
14
- const state = request.nextUrl.searchParams.get('state');
15
- const returnPathname = state ? JSON.parse(atob(state)).returnPathname : null;
16
- if (code) {
17
- try {
18
- // Use the code returned to us by AuthKit and authenticate the user with WorkOS
19
- const { accessToken, refreshToken, user, impersonator } = await workos_js_1.workos.userManagement.authenticateWithCode({
20
- clientId: env_variables_js_1.WORKOS_CLIENT_ID,
21
- code,
22
- });
23
- const url = request.nextUrl.clone();
24
- // Cleanup params
25
- url.searchParams.delete('code');
26
- url.searchParams.delete('state');
27
- // Redirect to the requested path and store the session
28
- url.pathname = returnPathname !== null && returnPathname !== void 0 ? returnPathname : returnPathnameOption;
29
- const response = server_1.NextResponse.redirect(url);
30
- if (!accessToken || !refreshToken)
31
- throw new Error('response is missing tokens');
32
- // The refreshToken should never be accesible publicly, hence why we encrypt it in the cookie session
33
- // Alternatively you could persist the refresh token in a backend database
34
- const session = await (0, session_js_1.encryptSession)({ accessToken, refreshToken, user, impersonator });
35
- (0, headers_1.cookies)().set(cookie_js_1.cookieName, session, cookie_js_1.cookieOptions);
36
- return response;
37
- }
38
- catch (error) {
39
- const errorRes = {
40
- error: error instanceof Error ? error.message : String(error),
41
- };
42
- console.error(errorRes);
43
- return errorResponse();
44
- }
45
- }
46
- return errorResponse();
47
- };
48
- function errorResponse() {
49
- return server_1.NextResponse.json({
50
- error: {
51
- message: 'Something went wrong',
52
- description: 'Couldn’t sign in. If you are not sure what happened, please contact your organization admin.',
53
- },
54
- }, { status: 500 });
55
- }
56
- }
57
- exports.handleAuth = handleAuth;
58
- //# sourceMappingURL=authkit-callback-route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authkit-callback-route.js","sourceRoot":"","sources":["../../src/authkit-callback-route.ts"],"names":[],"mappings":";;;AAAA,wCAAwD;AACxD,0CAAuC;AACvC,2CAAqC;AACrC,yDAAsD;AACtD,6CAA8C;AAC9C,2CAAwD;AAGxD,SAAgB,UAAU,CAAC,UAA6B,EAAE;IACxD,MAAM,EAAE,cAAc,EAAE,oBAAoB,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAE/D,OAAO,KAAK,UAAU,GAAG,CAAC,OAAoB;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7E,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC;gBACH,+EAA+E;gBAC/E,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC;oBACzG,QAAQ,EAAE,mCAAgB;oBAC1B,IAAI;iBACL,CAAC,CAAC;gBAEH,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEpC,iBAAiB;gBACjB,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEjC,uDAAuD;gBACvD,GAAG,CAAC,QAAQ,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,oBAAoB,CAAC;gBAEtD,MAAM,QAAQ,GAAG,qBAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE5C,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY;oBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAEjF,qGAAqG;gBACrG,0EAA0E;gBAC1E,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAc,EAAC,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBACxF,IAAA,iBAAO,GAAE,CAAC,GAAG,CAAC,sBAAU,EAAE,OAAO,EAAE,yBAAa,CAAC,CAAC;gBAElD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG;oBACf,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC;gBAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAExB,OAAO,aAAa,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,SAAS,aAAa;QACpB,OAAO,qBAAY,CAAC,IAAI,CACtB;YACE,KAAK,EAAE;gBACL,OAAO,EAAE,sBAAsB;gBAC/B,WAAW,EAAE,8FAA8F;aAC5G;SACF,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,CAAC;AACH,CAAC;AA5DD,gCA4DC"}
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
- declare const Button: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
3
- export { Button };
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Button = void 0;
4
- const tslib_1 = require("tslib");
5
- const React = tslib_1.__importStar(require("react"));
6
- const Button = React.forwardRef((props, forwardedRef) => {
7
- return (React.createElement("button", { ref: forwardedRef, type: "button", ...props, style: {
8
- display: 'inline-flex',
9
- alignItems: 'center',
10
- justifyContent: 'center',
11
- flexShrink: 0,
12
- height: '1.714em',
13
- padding: '0 0.6em',
14
- fontFamily: 'inherit',
15
- fontSize: 'inherit',
16
- borderRadius: 'min(max(calc(var(--wi-s) * 0.6), 1px), 7px)',
17
- border: 'none',
18
- backgroundColor: 'var(--wi-c)',
19
- color: 'white',
20
- ...props.style,
21
- } }));
22
- });
23
- exports.Button = Button;
24
- Button.displayName = 'Button';
25
- //# sourceMappingURL=button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/button.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAA8D,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;IACnH,OAAO,CACL,gCACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,QAAQ,KACT,KAAK,EACT,KAAK,EAAE;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,SAAS;YAElB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,6CAA6C;YAC3D,MAAM,EAAE,MAAM;YACd,eAAe,EAAE,aAAa;YAC9B,KAAK,EAAE,OAAO;YAEd,GAAG,KAAK,CAAC,KAAK;SACf,GACD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAIM,wBAAM;AAFf,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
@@ -1,8 +0,0 @@
1
- declare const cookieName = "wos-session";
2
- declare const cookieOptions: {
3
- path: string;
4
- httpOnly: boolean;
5
- secure: boolean;
6
- sameSite: "lax";
7
- };
8
- export { cookieName, cookieOptions };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cookieOptions = exports.cookieName = void 0;
4
- const cookieName = 'wos-session';
5
- exports.cookieName = cookieName;
6
- const cookieOptions = {
7
- path: '/',
8
- httpOnly: true,
9
- secure: true,
10
- sameSite: 'lax',
11
- };
12
- exports.cookieOptions = cookieOptions;
13
- //# sourceMappingURL=cookie.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../src/cookie.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,aAAa,CAAC;AAQxB,gCAAU;AAPnB,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,KAAc;CACzB,CAAC;AAEmB,sCAAa"}
@@ -1,5 +0,0 @@
1
- declare const WORKOS_CLIENT_ID: string;
2
- declare const WORKOS_API_KEY: string;
3
- declare const WORKOS_REDIRECT_URI: string;
4
- declare const WORKOS_COOKIE_PASSWORD: string;
5
- export { WORKOS_CLIENT_ID, WORKOS_API_KEY, WORKOS_REDIRECT_URI, WORKOS_COOKIE_PASSWORD };
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WORKOS_COOKIE_PASSWORD = exports.WORKOS_REDIRECT_URI = exports.WORKOS_API_KEY = exports.WORKOS_CLIENT_ID = void 0;
4
- function getEnvVariable(name) {
5
- const envVariable = process.env[name];
6
- if (!envVariable) {
7
- throw new Error(`${name} environment variable is not set`);
8
- }
9
- return envVariable;
10
- }
11
- const WORKOS_CLIENT_ID = getEnvVariable('WORKOS_CLIENT_ID');
12
- exports.WORKOS_CLIENT_ID = WORKOS_CLIENT_ID;
13
- const WORKOS_API_KEY = getEnvVariable('WORKOS_API_KEY');
14
- exports.WORKOS_API_KEY = WORKOS_API_KEY;
15
- const WORKOS_REDIRECT_URI = getEnvVariable('WORKOS_REDIRECT_URI');
16
- exports.WORKOS_REDIRECT_URI = WORKOS_REDIRECT_URI;
17
- const WORKOS_COOKIE_PASSWORD = getEnvVariable('WORKOS_COOKIE_PASSWORD');
18
- exports.WORKOS_COOKIE_PASSWORD = WORKOS_COOKIE_PASSWORD;
19
- if (WORKOS_COOKIE_PASSWORD.length < 32) {
20
- throw new Error('WORKOS_COOKIE_PASSWORD must be at least 32 characters long');
21
- }
22
- //# sourceMappingURL=env-variables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-variables.js","sourceRoot":"","sources":["../../src/env-variables.ts"],"names":[],"mappings":";;;AAAA,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,gBAAgB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AASnD,4CAAgB;AARzB,MAAM,cAAc,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAQ7B,wCAAc;AAPzC,MAAM,mBAAmB,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAOvB,kDAAmB;AAN9D,MAAM,sBAAsB,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;AAMR,wDAAsB;AAJtF,IAAI,sBAAsB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;IACvC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAChF,CAAC"}
@@ -1,2 +0,0 @@
1
- declare function getAuthorizationUrl(returnPathname?: string): Promise<string>;
2
- export { getAuthorizationUrl };
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAuthorizationUrl = void 0;
4
- const workos_js_1 = require("./workos.js");
5
- const env_variables_js_1 = require("./env-variables.js");
6
- async function getAuthorizationUrl(returnPathname) {
7
- return workos_js_1.workos.userManagement.getAuthorizationUrl({
8
- provider: 'authkit',
9
- clientId: env_variables_js_1.WORKOS_CLIENT_ID,
10
- redirectUri: env_variables_js_1.WORKOS_REDIRECT_URI,
11
- state: returnPathname ? btoa(JSON.stringify({ returnPathname })) : undefined,
12
- });
13
- }
14
- exports.getAuthorizationUrl = getAuthorizationUrl;
15
- //# sourceMappingURL=get-authorization-url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-authorization-url.js","sourceRoot":"","sources":["../../src/get-authorization-url.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,yDAA2E;AAE3E,KAAK,UAAU,mBAAmB,CAAC,cAAuB;IACxD,OAAO,kBAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC;QAC/C,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,mCAAgB;QAC1B,WAAW,EAAE,sCAAmB;QAChC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC,CAAC;AACL,CAAC;AAEQ,kDAAmB"}
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
- interface ImpersonationProps extends React.ComponentPropsWithoutRef<'div'> {
3
- side?: 'top' | 'bottom';
4
- }
5
- export declare function Impersonation({ side, ...props }: ImpersonationProps): Promise<React.JSX.Element | null>;
6
- export {};
@@ -1,119 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Impersonation = void 0;
4
- const tslib_1 = require("tslib");
5
- const React = tslib_1.__importStar(require("react"));
6
- const session_js_1 = require("./session.js");
7
- const auth_js_1 = require("./auth.js");
8
- const workos_js_1 = require("./workos.js");
9
- const button_js_1 = require("./button.js");
10
- const min_max_button_js_1 = require("./min-max-button.js");
11
- async function Impersonation({ side = 'bottom', ...props }) {
12
- const { impersonator, user, organizationId } = await (0, session_js_1.getUser)();
13
- if (!impersonator)
14
- return null;
15
- const organization = organizationId ? await workos_js_1.workos.organizations.getOrganization(organizationId) : null;
16
- return (React.createElement("div", { ...props, "data-workos-impersonation-root": "", style: {
17
- 'position': 'fixed',
18
- 'inset': 0,
19
- 'pointerEvents': 'none',
20
- 'zIndex': 9999,
21
- // short properties with defaults for authoring convenience
22
- '--wi-minimized': '0',
23
- '--wi-s': 'min(max(var(--workos-impersonation-size, 4px), 2px), 15px)',
24
- '--wi-bgc': 'var(--workos-impersonation-background-color, #fce654)',
25
- '--wi-c': 'var(--workos-impersonation-color, #1a1600)',
26
- '--wi-bc': 'var(--workos-impersonation-border-color, #e0c36c)',
27
- '--wi-bw': 'var(--workos-impersonation-border-width, 1px)',
28
- ...props.style,
29
- } },
30
- React.createElement("div", { style: {
31
- '--wi-frame-size': 'calc(var(--wi-s) * (1 - var(--wi-minimized)) + var(--wi-minimized) * var(--wi-bw) * -1)',
32
- 'position': 'absolute',
33
- 'inset': 'calc(var(--wi-frame-size) * -1)',
34
- 'borderRadius': 'calc(var(--wi-frame-size) * 3)',
35
- 'boxShadow': `
36
- inset 0 0 0 calc(var(--wi-frame-size) * 2) var(--wi-bgc),
37
- inset 0 0 0 calc(var(--wi-frame-size) * 2 + var(--wi-bw)) var(--wi-bc)
38
- `,
39
- 'transition': 'all 500ms cubic-bezier(0.16, 1, 0.3, 1)',
40
- } }),
41
- React.createElement("div", { style: {
42
- display: 'flex',
43
- justifyContent: 'center',
44
- position: 'fixed',
45
- left: 0,
46
- right: 0,
47
- ...(side === 'top' && { top: 'var(--wi-s)' }),
48
- ...(side === 'bottom' && { bottom: 'var(--wi-s)' }),
49
- fontFamily: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",
50
- fontSize: 'calc(12px + var(--wi-s) * 0.5)',
51
- lineHeight: '1.4',
52
- } },
53
- React.createElement("form", { action: async () => {
54
- 'use server';
55
- await (0, auth_js_1.signOut)();
56
- }, style: {
57
- display: 'flex',
58
- alignItems: 'baseline',
59
- paddingLeft: 'var(--wi-s)',
60
- paddingRight: 'var(--wi-s)',
61
- position: 'relative',
62
- marginLeft: 'calc(var(--wi-s) * 2)',
63
- marginRight: 'calc(var(--wi-s) * 2)',
64
- pointerEvents: 'auto',
65
- backgroundColor: 'var(--wi-bgc)',
66
- borderStyle: 'solid',
67
- borderColor: 'var(--wi-bc)',
68
- borderLeftWidth: 'var(--wi-bw)',
69
- borderRightWidth: 'var(--wi-bw)',
70
- transition: 'all 500ms cubic-bezier(0.16, 1, 0.3, 1)',
71
- transform: `translateX(calc(var(--wi-minimized) * (var(--wi-s) * 10 - 5%)))`,
72
- opacity: 'calc(1 - var(--wi-minimized))',
73
- zIndex: 'calc(1 - var(--wi-minimized))',
74
- ...(side === 'top' && {
75
- paddingTop: 0,
76
- paddingBottom: 'var(--wi-s)',
77
- borderTopWidth: 0,
78
- borderBottomWidth: 'var(--wi-bw)',
79
- borderBottomLeftRadius: 'var(--wi-s)',
80
- borderBottomRightRadius: 'var(--wi-s)',
81
- }),
82
- ...(side === 'bottom' && {
83
- paddingTop: 'var(--wi-s)',
84
- paddingBottom: 0,
85
- borderTopWidth: 'var(--wi-bw)',
86
- borderBottomWidth: 0,
87
- borderTopLeftRadius: 'var(--wi-s)',
88
- borderTopRightRadius: 'var(--wi-s)',
89
- }),
90
- } },
91
- React.createElement("p", { style: { all: 'unset', color: 'var(--wi-c)', textWrap: 'balance', marginLeft: 'var(--wi-s)' } },
92
- "You are impersonating ",
93
- React.createElement("b", null, user.email),
94
- ' ',
95
- organization !== null && (React.createElement(React.Fragment, null,
96
- "within the ",
97
- React.createElement("b", null, organization.name),
98
- " organization"))),
99
- React.createElement(button_js_1.Button, { type: "submit", style: { marginLeft: 'calc(var(--wi-s) * 2)', marginRight: 'var(--wi-s)' } }, "Stop"),
100
- React.createElement(min_max_button_js_1.MinMaxButton, { minimizedValue: "1" }, side === 'top' ? '↗' : '↘')),
101
- React.createElement("div", { style: {
102
- padding: 'var(--wi-s)',
103
- position: 'fixed',
104
- right: 'var(--wi-s)',
105
- pointerEvents: 'auto',
106
- backgroundColor: 'var(--wi-bgc)',
107
- border: 'var(--wi-bw) solid var(--wi-bc)',
108
- borderRadius: 'var(--wi-s)',
109
- transition: 'all 500ms cubic-bezier(0.16, 1, 0.3, 1)',
110
- transform: 'translateX(calc((1 - var(--wi-minimized)) * var(--wi-s) * -5))',
111
- opacity: 'var(--wi-minimized)',
112
- zIndex: 'var(--wi-minimized)',
113
- ...(side === 'top' && { top: 'var(--wi-s)' }),
114
- ...(side === 'bottom' && { bottom: 'var(--wi-s)' }),
115
- } },
116
- React.createElement(min_max_button_js_1.MinMaxButton, { minimizedValue: "0" }, side === 'top' ? '↙' : '↖')))));
117
- }
118
- exports.Impersonation = Impersonation;
119
- //# sourceMappingURL=impersonation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"impersonation.js","sourceRoot":"","sources":["../../src/impersonation.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { handleAuth } from './authkit-callback-route.js';
2
- import { authkitMiddleware } from './middleware.js';
3
- import { getUser } from './session.js';
4
- import { getSignInUrl, signOut } from './auth.js';
5
- import { Impersonation } from './impersonation.js';
6
- export { handleAuth, authkitMiddleware, getSignInUrl, getUser, signOut, Impersonation, };
package/dist/cjs/index.js DELETED
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Impersonation = exports.signOut = exports.getUser = exports.getSignInUrl = exports.authkitMiddleware = exports.handleAuth = void 0;
4
- const authkit_callback_route_js_1 = require("./authkit-callback-route.js");
5
- Object.defineProperty(exports, "handleAuth", { enumerable: true, get: function () { return authkit_callback_route_js_1.handleAuth; } });
6
- const middleware_js_1 = require("./middleware.js");
7
- Object.defineProperty(exports, "authkitMiddleware", { enumerable: true, get: function () { return middleware_js_1.authkitMiddleware; } });
8
- const session_js_1 = require("./session.js");
9
- Object.defineProperty(exports, "getUser", { enumerable: true, get: function () { return session_js_1.getUser; } });
10
- const auth_js_1 = require("./auth.js");
11
- Object.defineProperty(exports, "getSignInUrl", { enumerable: true, get: function () { return auth_js_1.getSignInUrl; } });
12
- Object.defineProperty(exports, "signOut", { enumerable: true, get: function () { return auth_js_1.signOut; } });
13
- const impersonation_js_1 = require("./impersonation.js");
14
- Object.defineProperty(exports, "Impersonation", { enumerable: true, get: function () { return impersonation_js_1.Impersonation; } });
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2EAAyD;AAOvD,2FAPO,sCAAU,OAOP;AANZ,mDAAoD;AAQlD,kGARO,iCAAiB,OAQP;AAPnB,6CAAuC;AAUrC,wFAVO,oBAAO,OAUP;AATT,uCAAkD;AAQhD,6FARO,sBAAY,OAQP;AAEZ,wFAVqB,iBAAO,OAUrB;AATT,yDAAmD;AAWjD,8FAXO,gCAAa,OAWP"}
@@ -1,33 +0,0 @@
1
- import { User } from '@workos-inc/node';
2
- export interface HandleAuthOptions {
3
- returnPathname?: string;
4
- }
5
- export interface Impersonator {
6
- email: string;
7
- reason: string | null;
8
- }
9
- export interface Session {
10
- accessToken: string;
11
- refreshToken: string;
12
- user: User;
13
- impersonator?: Impersonator;
14
- }
15
- export interface UserInfo {
16
- user: User;
17
- sessionId: string;
18
- organizationId?: string;
19
- role?: string;
20
- impersonator?: Impersonator;
21
- }
22
- export interface NoUserInfo {
23
- user: null;
24
- sessionId?: undefined;
25
- organizationId?: undefined;
26
- role?: undefined;
27
- impersonator?: undefined;
28
- }
29
- export interface AccessToken {
30
- sid: string;
31
- org_id?: string;
32
- role?: string;
33
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=interfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { NextMiddleware } from 'next/server';
2
- interface AuthkitMiddlewareOptions {
3
- debug?: boolean;
4
- }
5
- export declare function authkitMiddleware({ debug }?: AuthkitMiddlewareOptions): NextMiddleware;
6
- export {};
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.authkitMiddleware = void 0;
4
- const session_js_1 = require("./session.js");
5
- function authkitMiddleware({ debug = false } = {}) {
6
- return function (request) {
7
- return (0, session_js_1.updateSession)(request, debug);
8
- };
9
- }
10
- exports.authkitMiddleware = authkitMiddleware;
11
- //# sourceMappingURL=middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":";;;AACA,6CAA6C;AAM7C,SAAgB,iBAAiB,CAAC,EAAE,KAAK,GAAG,KAAK,KAA+B,EAAE;IAChF,OAAO,UAAU,OAAO;QACtB,OAAO,IAAA,0BAAa,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAJD,8CAIC"}
@@ -1,7 +0,0 @@
1
- import * as React from 'react';
2
- interface MinMaxButtonProps {
3
- children?: React.ReactNode;
4
- minimizedValue: '0' | '1';
5
- }
6
- export declare function MinMaxButton({ children, minimizedValue }: MinMaxButtonProps): React.JSX.Element;
7
- export {};
@@ -1,15 +0,0 @@
1
- "use strict";
2
- 'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.MinMaxButton = void 0;
5
- const tslib_1 = require("tslib");
6
- const React = tslib_1.__importStar(require("react"));
7
- const button_js_1 = require("./button.js");
8
- function MinMaxButton({ children, minimizedValue }) {
9
- return (React.createElement(button_js_1.Button, { onClick: () => {
10
- const root = document.querySelector('[data-workos-impersonation-root]');
11
- root === null || root === void 0 ? void 0 : root.style.setProperty('--wi-minimized', minimizedValue);
12
- }, style: { padding: 0, width: '1.714em' } }, children));
13
- }
14
- exports.MinMaxButton = MinMaxButton;
15
- //# sourceMappingURL=min-max-button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"min-max-button.js","sourceRoot":"","sources":["../../src/min-max-button.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,qDAA+B;AAC/B,2CAAqC;AAOrC,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAqB;IAC1E,OAAO,CACL,oBAAC,kBAAM,IACL,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,kCAAkC,CAAuB,CAAC;YAC9F,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC5D,CAAC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAEtC,QAAQ,CACF,CACV,CAAC;AACJ,CAAC;AAZD,oCAYC"}
@@ -1,12 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
- import { NoUserInfo, Session, UserInfo } from './interfaces.js';
3
- declare function encryptSession(session: Session): Promise<string>;
4
- declare function updateSession(request: NextRequest, debug: boolean): Promise<NextResponse<unknown>>;
5
- declare function getUser(options?: {
6
- ensureSignedIn: false;
7
- }): Promise<UserInfo | NoUserInfo>;
8
- declare function getUser(options: {
9
- ensureSignedIn: true;
10
- }): Promise<UserInfo>;
11
- declare function terminateSession(): Promise<void>;
12
- export { encryptSession, updateSession, getUser, terminateSession };
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.terminateSession = exports.getUser = exports.updateSession = exports.encryptSession = void 0;
4
- const navigation_1 = require("next/navigation");
5
- const headers_1 = require("next/headers");
6
- const server_1 = require("next/server");
7
- const jose_1 = require("jose");
8
- const iron_session_1 = require("iron-session");
9
- const cookie_js_1 = require("./cookie.js");
10
- const workos_js_1 = require("./workos.js");
11
- const env_variables_js_1 = require("./env-variables.js");
12
- const get_authorization_url_js_1 = require("./get-authorization-url.js");
13
- const sessionHeaderName = 'x-workos-session';
14
- const middlewareHeaderName = 'x-workos-middleware';
15
- const JWKS = (0, jose_1.createRemoteJWKSet)(new URL(workos_js_1.workos.userManagement.getJwksUrl(env_variables_js_1.WORKOS_CLIENT_ID)));
16
- async function encryptSession(session) {
17
- return (0, iron_session_1.sealData)(session, { password: env_variables_js_1.WORKOS_COOKIE_PASSWORD });
18
- }
19
- exports.encryptSession = encryptSession;
20
- async function updateSession(request, debug) {
21
- const session = await getSessionFromCookie();
22
- const newRequestHeaders = new Headers(request.headers);
23
- // We store the current request url in a custom header, so we can always have access to it
24
- // This is because on hard navigations we don't have access to `next-url` but need to get the current
25
- // `pathname` to be able to return the users where they came from before sign-in
26
- newRequestHeaders.set('x-url', request.url);
27
- // Record that the request was routed through the middleware so we can check later for DX purposes
28
- newRequestHeaders.set(middlewareHeaderName, 'true');
29
- // If no session, just continue
30
- if (!session) {
31
- return server_1.NextResponse.next({
32
- request: { headers: newRequestHeaders },
33
- });
34
- }
35
- const hasValidSession = await verifyAccessToken(session.accessToken);
36
- if (hasValidSession) {
37
- if (debug)
38
- console.log('Session is valid');
39
- // set the x-workos-session header according to the current cookie value
40
- newRequestHeaders.set(sessionHeaderName, (0, headers_1.cookies)().get(cookie_js_1.cookieName).value);
41
- return server_1.NextResponse.next({
42
- request: { headers: newRequestHeaders },
43
- });
44
- }
45
- try {
46
- if (debug)
47
- console.log('Session invalid. Attempting refresh', session.refreshToken);
48
- // If the session is invalid (i.e. the access token has expired) attempt to re-authenticate with the refresh token
49
- const { accessToken, refreshToken } = await workos_js_1.workos.userManagement.authenticateWithRefreshToken({
50
- clientId: env_variables_js_1.WORKOS_CLIENT_ID,
51
- refreshToken: session.refreshToken,
52
- });
53
- if (debug)
54
- console.log('Refresh successful:', refreshToken);
55
- // Encrypt session with new access and refresh tokens
56
- const encryptedSession = await encryptSession({
57
- accessToken,
58
- refreshToken,
59
- user: session.user,
60
- impersonator: session.impersonator,
61
- });
62
- newRequestHeaders.set(sessionHeaderName, encryptedSession);
63
- const response = server_1.NextResponse.next({
64
- request: { headers: newRequestHeaders },
65
- });
66
- // update the cookie
67
- response.cookies.set(cookie_js_1.cookieName, encryptedSession, cookie_js_1.cookieOptions);
68
- return response;
69
- }
70
- catch (e) {
71
- console.warn('Failed to refresh', e);
72
- const response = server_1.NextResponse.next();
73
- response.cookies.delete(cookie_js_1.cookieName);
74
- return response;
75
- }
76
- }
77
- exports.updateSession = updateSession;
78
- async function getUser({ ensureSignedIn = false } = {}) {
79
- const hasMiddleware = Boolean((0, headers_1.headers)().get(middlewareHeaderName));
80
- if (!hasMiddleware) {
81
- throw new Error('You are calling `getUser` on a path that isn’t covered by the AuthKit middleware. Make sure it is running on all paths you are calling `getUser` from by updating your middleware config in `middleware.(js|ts)`.');
82
- }
83
- const session = await getSessionFromHeader();
84
- if (!session) {
85
- if (ensureSignedIn) {
86
- const url = (0, headers_1.headers)().get('x-url');
87
- const returnPathname = url ? new URL(url).pathname : undefined;
88
- (0, navigation_1.redirect)(await (0, get_authorization_url_js_1.getAuthorizationUrl)(returnPathname));
89
- }
90
- return { user: null };
91
- }
92
- const { sid: sessionId, org_id: organizationId, role } = (0, jose_1.decodeJwt)(session.accessToken);
93
- return {
94
- sessionId,
95
- user: session.user,
96
- organizationId,
97
- role,
98
- impersonator: session.impersonator,
99
- };
100
- }
101
- exports.getUser = getUser;
102
- async function terminateSession() {
103
- const { sessionId } = await getUser();
104
- if (sessionId) {
105
- (0, navigation_1.redirect)(workos_js_1.workos.userManagement.getLogoutUrl({ sessionId }));
106
- }
107
- (0, navigation_1.redirect)('/');
108
- }
109
- exports.terminateSession = terminateSession;
110
- async function verifyAccessToken(accessToken) {
111
- try {
112
- await (0, jose_1.jwtVerify)(accessToken, JWKS);
113
- return true;
114
- }
115
- catch (e) {
116
- console.warn('Failed to verify session:', e);
117
- return false;
118
- }
119
- }
120
- async function getSessionFromCookie() {
121
- const cookie = (0, headers_1.cookies)().get(cookie_js_1.cookieName);
122
- if (cookie) {
123
- return (0, iron_session_1.unsealData)(cookie.value, {
124
- password: env_variables_js_1.WORKOS_COOKIE_PASSWORD,
125
- });
126
- }
127
- }
128
- async function getSessionFromHeader() {
129
- const authHeader = (0, headers_1.headers)().get(sessionHeaderName);
130
- if (!authHeader)
131
- return;
132
- return (0, iron_session_1.unsealData)(authHeader, { password: env_variables_js_1.WORKOS_COOKIE_PASSWORD });
133
- }
134
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import WorkOS from '@workos-inc/node';
2
- declare const workos: WorkOS;
3
- export { workos };
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.workos = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_1 = tslib_1.__importDefault(require("@workos-inc/node"));
6
- const env_variables_js_1 = require("./env-variables.js");
7
- // Initialize the WorkOS client
8
- const workos = new node_1.default(env_variables_js_1.WORKOS_API_KEY);
9
- exports.workos = workos;
10
- //# sourceMappingURL=workos.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workos.js","sourceRoot":"","sources":["../../src/workos.ts"],"names":[],"mappings":";;;;AAAA,oEAAsC;AACtC,yDAAoD;AAEpD,+BAA+B;AAC/B,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,iCAAc,CAAC,CAAC;AAEjC,wBAAM"}