@workos-inc/authkit-nextjs 2.16.0 → 2.16.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.
@@ -11,11 +11,11 @@ const WORKOS_COOKIE_DOMAIN = getEnvVariable('WORKOS_COOKIE_DOMAIN');
11
11
  const WORKOS_COOKIE_MAX_AGE = getEnvVariable('WORKOS_COOKIE_MAX_AGE');
12
12
  const WORKOS_COOKIE_NAME = getEnvVariable('WORKOS_COOKIE_NAME');
13
13
  const WORKOS_COOKIE_SAMESITE = getEnvVariable('WORKOS_COOKIE_SAMESITE');
14
- const WORKOS_DISABLE_PKCE = getEnvVariable('WORKOS_DISABLE_PKCE');
14
+ const WORKOS_ENABLE_PKCE = getEnvVariable('WORKOS_ENABLE_PKCE');
15
15
  // Required env variables
16
16
  const WORKOS_API_KEY = (_a = getEnvVariable('WORKOS_API_KEY')) !== null && _a !== void 0 ? _a : '';
17
17
  const WORKOS_CLIENT_ID = (_b = getEnvVariable('WORKOS_CLIENT_ID')) !== null && _b !== void 0 ? _b : '';
18
18
  const WORKOS_COOKIE_PASSWORD = (_c = getEnvVariable('WORKOS_COOKIE_PASSWORD')) !== null && _c !== void 0 ? _c : '';
19
19
  const WORKOS_REDIRECT_URI = (_d = process.env.NEXT_PUBLIC_WORKOS_REDIRECT_URI) !== null && _d !== void 0 ? _d : '';
20
- export { WORKOS_API_HOSTNAME, WORKOS_API_HTTPS, WORKOS_API_KEY, WORKOS_API_PORT, WORKOS_CLIENT_ID, WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_MAX_AGE, WORKOS_COOKIE_NAME, WORKOS_COOKIE_PASSWORD, WORKOS_REDIRECT_URI, WORKOS_COOKIE_SAMESITE, WORKOS_DISABLE_PKCE, };
20
+ export { WORKOS_API_HOSTNAME, WORKOS_API_HTTPS, WORKOS_API_KEY, WORKOS_API_PORT, WORKOS_CLIENT_ID, WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_MAX_AGE, WORKOS_COOKIE_NAME, WORKOS_COOKIE_PASSWORD, WORKOS_REDIRECT_URI, WORKOS_COOKIE_SAMESITE, WORKOS_ENABLE_PKCE, };
21
21
  //# sourceMappingURL=env-variables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env-variables.js","sourceRoot":"","sources":["../../src/env-variables.ts"],"names":[],"mappings":"AAAA,0BAA0B;;AAE1B,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,yBAAyB;AACzB,MAAM,mBAAmB,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAC5D,MAAM,eAAe,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AACpE,MAAM,qBAAqB,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAC;AACtE,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAChE,MAAM,sBAAsB,GAAG,cAAc,CAAC,wBAAwB,CAA0C,CAAC;AACjH,MAAM,mBAAmB,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAElE,yBAAyB;AACzB,MAAM,cAAc,GAAG,MAAA,cAAc,CAAC,gBAAgB,CAAC,mCAAI,EAAE,CAAC;AAC9D,MAAM,gBAAgB,GAAG,MAAA,cAAc,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC;AAClE,MAAM,sBAAsB,GAAG,MAAA,cAAc,CAAC,wBAAwB,CAAC,mCAAI,EAAE,CAAC;AAC9E,MAAM,mBAAmB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,mCAAI,EAAE,CAAC;AAE9E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"env-variables.js","sourceRoot":"","sources":["../../src/env-variables.ts"],"names":[],"mappings":"AAAA,0BAA0B;;AAE1B,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,yBAAyB;AACzB,MAAM,mBAAmB,GAAG,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AAC5D,MAAM,eAAe,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAC1D,MAAM,oBAAoB,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AACpE,MAAM,qBAAqB,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAAC;AACtE,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAChE,MAAM,sBAAsB,GAAG,cAAc,CAAC,wBAAwB,CAA0C,CAAC;AACjH,MAAM,kBAAkB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC;AAEhE,yBAAyB;AACzB,MAAM,cAAc,GAAG,MAAA,cAAc,CAAC,gBAAgB,CAAC,mCAAI,EAAE,CAAC;AAC9D,MAAM,gBAAgB,GAAG,MAAA,cAAc,CAAC,kBAAkB,CAAC,mCAAI,EAAE,CAAC;AAClE,MAAM,sBAAsB,GAAG,MAAA,cAAc,CAAC,wBAAwB,CAAC,mCAAI,EAAE,CAAC;AAC9E,MAAM,mBAAmB,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,mCAAI,EAAE,CAAC;AAE9E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { sealData } from 'iron-session';
2
2
  import { headers } from 'next/headers';
3
- import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD, WORKOS_DISABLE_PKCE, WORKOS_REDIRECT_URI } from './env-variables.js';
3
+ import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD, WORKOS_ENABLE_PKCE, WORKOS_REDIRECT_URI } from './env-variables.js';
4
4
  import { getWorkOS } from './workos.js';
5
5
  async function getAuthorizationUrl(options = {}) {
6
6
  var _a;
@@ -24,17 +24,17 @@ async function getAuthorizationUrl(options = {}) {
24
24
  loginHint,
25
25
  prompt,
26
26
  };
27
- if (WORKOS_DISABLE_PKCE === 'true') {
28
- return { url: getWorkOS().userManagement.getAuthorizationUrl(baseOptions), pkceCookieValue: undefined };
27
+ if (WORKOS_ENABLE_PKCE === 'true') {
28
+ const pkce = await getWorkOS().pkce.generate();
29
+ const pkceCookieValue = await sealData({ codeVerifier: pkce.codeVerifier }, { password: WORKOS_COOKIE_PASSWORD, ttl: 600 });
30
+ const url = getWorkOS().userManagement.getAuthorizationUrl({
31
+ ...baseOptions,
32
+ codeChallenge: pkce.codeChallenge,
33
+ codeChallengeMethod: pkce.codeChallengeMethod,
34
+ });
35
+ return { url, pkceCookieValue };
29
36
  }
30
- const pkce = await getWorkOS().pkce.generate();
31
- const pkceCookieValue = await sealData({ codeVerifier: pkce.codeVerifier }, { password: WORKOS_COOKIE_PASSWORD, ttl: 600 });
32
- const url = getWorkOS().userManagement.getAuthorizationUrl({
33
- ...baseOptions,
34
- codeChallenge: pkce.codeChallenge,
35
- codeChallengeMethod: pkce.codeChallengeMethod,
36
- });
37
- return { url, pkceCookieValue };
37
+ return { url: getWorkOS().userManagement.getAuthorizationUrl(baseOptions), pkceCookieValue: undefined };
38
38
  }
39
39
  export { getAuthorizationUrl };
40
40
  //# sourceMappingURL=get-authorization-url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-authorization-url.js","sourceRoot":"","sources":["../../src/get-authorization-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAExH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,KAAK,UAAU,mBAAmB,CAAC,UAA6B,EAAE;;IAChE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACtG,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,WAAW,GAAG,MAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,mCAAI,SAAS,CAAC;IAC/D,CAAC;IAED,MAAM,aAAa,GAAG,cAAc;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QAClF,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,UAAU,GACd,aAAa,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,WAAW,IAAI,SAAS,CAAC;IAE/G,MAAM,WAAW,GAAG;QAClB,QAAQ,EAAE,SAAkB;QAC5B,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,mBAAmB;QAC/C,KAAK,EAAE,UAAU;QACjB,UAAU;QACV,cAAc;QACd,SAAS;QACT,MAAM;KACP,CAAC;IAEF,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;IAC1G,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/C,MAAM,eAAe,GAAG,MAAM,QAAQ,CACpC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EACnC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,CAC/C,CAAC;IACF,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC;QACzD,GAAG,WAAW;QACd,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;KAC9C,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC;AAClC,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"get-authorization-url.js","sourceRoot":"","sources":["../../src/get-authorization-url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEvH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,KAAK,UAAU,mBAAmB,CAAC,UAA6B,EAAE;;IAChE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IACtG,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,CAAC;QACpC,WAAW,GAAG,MAAA,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,mCAAI,SAAS,CAAC;IAC/D,CAAC;IAED,MAAM,aAAa,GAAG,cAAc;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QAClF,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,UAAU,GACd,aAAa,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,WAAW,IAAI,SAAS,CAAC;IAE/G,MAAM,WAAW,GAAG;QAClB,QAAQ,EAAE,SAAkB;QAC5B,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,mBAAmB;QAC/C,KAAK,EAAE,UAAU;QACjB,UAAU;QACV,cAAc;QACd,SAAS;QACT,MAAM;KACP,CAAC;IAEF,IAAI,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,eAAe,GAAG,MAAM,QAAQ,CACpC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,EACnC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,CAC/C,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC;YACzD,GAAG,WAAW;YACd,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,CAAC,CAAC;QAEH,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;AAC1G,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -5,9 +5,9 @@ declare const WORKOS_COOKIE_DOMAIN: string | undefined;
5
5
  declare const WORKOS_COOKIE_MAX_AGE: string | undefined;
6
6
  declare const WORKOS_COOKIE_NAME: string | undefined;
7
7
  declare const WORKOS_COOKIE_SAMESITE: "lax" | "strict" | "none" | undefined;
8
- declare const WORKOS_DISABLE_PKCE: string | undefined;
8
+ declare const WORKOS_ENABLE_PKCE: string | undefined;
9
9
  declare const WORKOS_API_KEY: string;
10
10
  declare const WORKOS_CLIENT_ID: string;
11
11
  declare const WORKOS_COOKIE_PASSWORD: string;
12
12
  declare const WORKOS_REDIRECT_URI: string;
13
- export { WORKOS_API_HOSTNAME, WORKOS_API_HTTPS, WORKOS_API_KEY, WORKOS_API_PORT, WORKOS_CLIENT_ID, WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_MAX_AGE, WORKOS_COOKIE_NAME, WORKOS_COOKIE_PASSWORD, WORKOS_REDIRECT_URI, WORKOS_COOKIE_SAMESITE, WORKOS_DISABLE_PKCE, };
13
+ export { WORKOS_API_HOSTNAME, WORKOS_API_HTTPS, WORKOS_API_KEY, WORKOS_API_PORT, WORKOS_CLIENT_ID, WORKOS_COOKIE_DOMAIN, WORKOS_COOKIE_MAX_AGE, WORKOS_COOKIE_NAME, WORKOS_COOKIE_PASSWORD, WORKOS_REDIRECT_URI, WORKOS_COOKIE_SAMESITE, WORKOS_ENABLE_PKCE, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workos-inc/authkit-nextjs",
3
- "version": "2.16.0",
3
+ "version": "2.16.1",
4
4
  "description": "Authentication and session helpers for using WorkOS & AuthKit with Next.js",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -12,7 +12,7 @@ const WORKOS_COOKIE_DOMAIN = getEnvVariable('WORKOS_COOKIE_DOMAIN');
12
12
  const WORKOS_COOKIE_MAX_AGE = getEnvVariable('WORKOS_COOKIE_MAX_AGE');
13
13
  const WORKOS_COOKIE_NAME = getEnvVariable('WORKOS_COOKIE_NAME');
14
14
  const WORKOS_COOKIE_SAMESITE = getEnvVariable('WORKOS_COOKIE_SAMESITE') as 'lax' | 'strict' | 'none' | undefined;
15
- const WORKOS_DISABLE_PKCE = getEnvVariable('WORKOS_DISABLE_PKCE');
15
+ const WORKOS_ENABLE_PKCE = getEnvVariable('WORKOS_ENABLE_PKCE');
16
16
 
17
17
  // Required env variables
18
18
  const WORKOS_API_KEY = getEnvVariable('WORKOS_API_KEY') ?? '';
@@ -32,5 +32,5 @@ export {
32
32
  WORKOS_COOKIE_PASSWORD,
33
33
  WORKOS_REDIRECT_URI,
34
34
  WORKOS_COOKIE_SAMESITE,
35
- WORKOS_DISABLE_PKCE,
35
+ WORKOS_ENABLE_PKCE,
36
36
  };
@@ -26,7 +26,7 @@ describe('getAuthorizationUrl', () => {
26
26
  const workos = getWorkOS();
27
27
  beforeEach(() => {
28
28
  vi.clearAllMocks();
29
- delete process.env.WORKOS_DISABLE_PKCE;
29
+ delete process.env.WORKOS_ENABLE_PKCE;
30
30
  fakeWorkosInstance.pkce.generate.mockResolvedValue({
31
31
  codeVerifier: 'test-code-verifier',
32
32
  codeChallenge: 'test-code-challenge',
@@ -71,11 +71,31 @@ describe('getAuthorizationUrl', () => {
71
71
  });
72
72
 
73
73
  describe('PKCE', () => {
74
- it('generates PKCE pair and includes codeChallenge in authorization URL', async () => {
74
+ it('skips PKCE by default', async () => {
75
75
  vi.mocked(workos.userManagement.getAuthorizationUrl).mockReturnValue('mock-url');
76
76
 
77
77
  const result = await getAuthorizationUrl({});
78
78
 
79
+ expect(fakeWorkosInstance.pkce.generate).not.toHaveBeenCalled();
80
+ expect(workos.userManagement.getAuthorizationUrl).toHaveBeenCalledWith(
81
+ expect.not.objectContaining({
82
+ codeChallenge: expect.any(String),
83
+ }),
84
+ );
85
+ expect(result.pkceCookieValue).toBeUndefined();
86
+ });
87
+
88
+ it('generates PKCE pair when WORKOS_ENABLE_PKCE is set to true', async () => {
89
+ process.env.WORKOS_ENABLE_PKCE = 'true';
90
+
91
+ // Re-import to pick up the new env var
92
+ vi.resetModules();
93
+ const { getAuthorizationUrl: freshGetAuthorizationUrl } = await import('./get-authorization-url.js');
94
+
95
+ vi.mocked(workos.userManagement.getAuthorizationUrl).mockReturnValue('mock-url');
96
+
97
+ const result = await freshGetAuthorizationUrl({});
98
+
79
99
  expect(fakeWorkosInstance.pkce.generate).toHaveBeenCalled();
80
100
  expect(workos.userManagement.getAuthorizationUrl).toHaveBeenCalledWith(
81
101
  expect.objectContaining({
@@ -88,20 +108,9 @@ describe('getAuthorizationUrl', () => {
88
108
  expect(result.pkceCookieValue).not.toBe('');
89
109
  });
90
110
 
91
- it('returns sealed cookie value for the verifier', async () => {
92
- vi.mocked(workos.userManagement.getAuthorizationUrl).mockReturnValue('mock-url');
93
-
94
- const result = await getAuthorizationUrl({});
95
-
96
- // pkceCookieValue should be a sealed (encrypted) string
97
- expect(typeof result.pkceCookieValue).toBe('string');
98
- expect(result.pkceCookieValue!.length).toBeGreaterThan(0);
99
- });
100
-
101
- it('skips PKCE when WORKOS_DISABLE_PKCE is set to true', async () => {
102
- process.env.WORKOS_DISABLE_PKCE = 'true';
111
+ it('returns sealed cookie value for the verifier when PKCE is enabled', async () => {
112
+ process.env.WORKOS_ENABLE_PKCE = 'true';
103
113
 
104
- // Re-import to pick up the new env var
105
114
  vi.resetModules();
106
115
  const { getAuthorizationUrl: freshGetAuthorizationUrl } = await import('./get-authorization-url.js');
107
116
 
@@ -109,13 +118,9 @@ describe('getAuthorizationUrl', () => {
109
118
 
110
119
  const result = await freshGetAuthorizationUrl({});
111
120
 
112
- expect(fakeWorkosInstance.pkce.generate).not.toHaveBeenCalled();
113
- expect(workos.userManagement.getAuthorizationUrl).toHaveBeenCalledWith(
114
- expect.not.objectContaining({
115
- codeChallenge: expect.any(String),
116
- }),
117
- );
118
- expect(result.pkceCookieValue).toBeUndefined();
121
+ // pkceCookieValue should be a sealed (encrypted) string
122
+ expect(typeof result.pkceCookieValue).toBe('string');
123
+ expect(result.pkceCookieValue!.length).toBeGreaterThan(0);
119
124
  });
120
125
  });
121
126
  });
@@ -1,6 +1,6 @@
1
1
  import { sealData } from 'iron-session';
2
2
  import { headers } from 'next/headers';
3
- import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD, WORKOS_DISABLE_PKCE, WORKOS_REDIRECT_URI } from './env-variables.js';
3
+ import { WORKOS_CLIENT_ID, WORKOS_COOKIE_PASSWORD, WORKOS_ENABLE_PKCE, WORKOS_REDIRECT_URI } from './env-variables.js';
4
4
  import { GetAuthURLOptions, GetAuthURLResult } from './interfaces.js';
5
5
  import { getWorkOS } from './workos.js';
6
6
 
@@ -30,22 +30,22 @@ async function getAuthorizationUrl(options: GetAuthURLOptions = {}): Promise<Get
30
30
  prompt,
31
31
  };
32
32
 
33
- if (WORKOS_DISABLE_PKCE === 'true') {
34
- return { url: getWorkOS().userManagement.getAuthorizationUrl(baseOptions), pkceCookieValue: undefined };
33
+ if (WORKOS_ENABLE_PKCE === 'true') {
34
+ const pkce = await getWorkOS().pkce.generate();
35
+ const pkceCookieValue = await sealData(
36
+ { codeVerifier: pkce.codeVerifier },
37
+ { password: WORKOS_COOKIE_PASSWORD, ttl: 600 },
38
+ );
39
+ const url = getWorkOS().userManagement.getAuthorizationUrl({
40
+ ...baseOptions,
41
+ codeChallenge: pkce.codeChallenge,
42
+ codeChallengeMethod: pkce.codeChallengeMethod,
43
+ });
44
+
45
+ return { url, pkceCookieValue };
35
46
  }
36
47
 
37
- const pkce = await getWorkOS().pkce.generate();
38
- const pkceCookieValue = await sealData(
39
- { codeVerifier: pkce.codeVerifier },
40
- { password: WORKOS_COOKIE_PASSWORD, ttl: 600 },
41
- );
42
- const url = getWorkOS().userManagement.getAuthorizationUrl({
43
- ...baseOptions,
44
- codeChallenge: pkce.codeChallenge,
45
- codeChallengeMethod: pkce.codeChallengeMethod,
46
- });
47
-
48
- return { url, pkceCookieValue };
48
+ return { url: getWorkOS().userManagement.getAuthorizationUrl(baseOptions), pkceCookieValue: undefined };
49
49
  }
50
50
 
51
51
  export { getAuthorizationUrl };