@opensaas/keystone-nextjs-auth 24.1.0 → 25.0.0

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @opensaas-keystone/nextjs-auth
2
2
 
3
+ ## 25.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - a759195: Upgrade to keystone-6@3.0.0
8
+
9
+ ### Minor Changes
10
+
11
+ - 44031fa: Update `next-auth` to `4.14`
12
+
3
13
  ## 24.1.0
4
14
 
5
15
  ### Minor Changes
@@ -6,7 +6,7 @@ export declare function getBaseAuthSchema({ listKey, base, }: {
6
6
  }): {
7
7
  extension: {
8
8
  query: {
9
- authenticatedItem: import("@graphql-ts/schema").Field<unknown, {}, import("@graphql-ts/schema").UnionType<BaseItem, graphql.Context>, string, graphql.Context>;
9
+ authenticatedItem: import("@graphql-ts/schema").Field<unknown, {}, import("@graphql-ts/schema").UnionType<BaseItem, graphql.Context>, string, import("@keystone-6/core/types").KeystoneContext<import("@keystone-6/core/types").BaseKeystoneTypeInfo>>;
10
10
  };
11
11
  };
12
12
  };
@@ -170,21 +170,12 @@ const getSchemaExtension = _ref => {
170
170
  };
171
171
 
172
172
  const template = `
173
+ import { getContext } from '@keystone-6/core/context';
173
174
  import getNextAuthPage from '@opensaas/keystone-nextjs-auth/pages/NextAuthPage';
174
175
  import keystoneConfig from '../../../../../keystone';
175
- import { PrismaClient } from '.prisma/client';
176
- import { createQueryAPI } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/node-api';
177
-
178
- const cleanConfig = (config) => {
179
- const { db, ...rest } = config;
180
- if (db) {
181
- const { onConnect, ...restDB } = db;
182
- return { ...rest, db: restDB };
183
- }
184
- return rest;
185
- };
176
+ import * as PrismaModule from '.prisma/client';
186
177
 
187
- const keystoneQueryAPI = global.keystoneQueryAPI || createQueryAPI(cleanConfig(keystoneConfig), PrismaClient);
178
+ const keystoneQueryAPI = global.keystoneQueryAPI || getContext(keystoneConfig, PrismaModule).sudo().query;
188
179
 
189
180
  if (process.env.NODE_ENV !== 'production') globalThis.keystoneQueryAPI = keystoneQueryAPI
190
181
 
@@ -502,7 +493,6 @@ function createAuth(_ref) {
502
493
 
503
494
  return (await pageMiddleware(args)) ?? (keystoneConfig === null || keystoneConfig === void 0 ? void 0 : (_keystoneConfig$ui2 = keystoneConfig.ui) === null || _keystoneConfig$ui2 === void 0 ? void 0 : (_keystoneConfig$ui2$p = _keystoneConfig$ui2.pageMiddleware) === null || _keystoneConfig$ui2$p === void 0 ? void 0 : _keystoneConfig$ui2$p.call(_keystoneConfig$ui2, args));
504
495
  },
505
- enableSessionItem: true,
506
496
  isAccessAllowed: async context => {
507
497
  var _context$req, _keystoneConfig$ui3;
508
498
 
@@ -536,9 +526,6 @@ function createAuth(_ref) {
536
526
  resolver,
537
527
  session,
538
528
  lists: _objectSpread({}, keystoneConfig.lists),
539
- experimental: _objectSpread(_objectSpread({}, keystoneConfig.experimental), {}, {
540
- generateNodeAPI: true
541
- }),
542
529
  extendGraphqlSchema: existingExtendGraphQLSchema ? schema => existingExtendGraphQLSchema(extendGraphqlSchema(schema)) : extendGraphqlSchema
543
530
  });
544
531
  };
@@ -169,21 +169,12 @@ const getSchemaExtension = _ref => {
169
169
  };
170
170
 
171
171
  const template = `
172
+ import { getContext } from '@keystone-6/core/context';
172
173
  import getNextAuthPage from '@opensaas/keystone-nextjs-auth/pages/NextAuthPage';
173
174
  import keystoneConfig from '../../../../../keystone';
174
- import { PrismaClient } from '.prisma/client';
175
- import { createQueryAPI } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/node-api';
176
-
177
- const cleanConfig = (config) => {
178
- const { db, ...rest } = config;
179
- if (db) {
180
- const { onConnect, ...restDB } = db;
181
- return { ...rest, db: restDB };
182
- }
183
- return rest;
184
- };
175
+ import * as PrismaModule from '.prisma/client';
185
176
 
186
- const keystoneQueryAPI = global.keystoneQueryAPI || createQueryAPI(cleanConfig(keystoneConfig), PrismaClient);
177
+ const keystoneQueryAPI = global.keystoneQueryAPI || getContext(keystoneConfig, PrismaModule).sudo().query;
187
178
 
188
179
  if (process.env.NODE_ENV !== 'production') globalThis.keystoneQueryAPI = keystoneQueryAPI
189
180
 
@@ -501,7 +492,6 @@ function createAuth(_ref) {
501
492
 
502
493
  return (await pageMiddleware(args)) ?? (keystoneConfig === null || keystoneConfig === void 0 ? void 0 : (_keystoneConfig$ui2 = keystoneConfig.ui) === null || _keystoneConfig$ui2 === void 0 ? void 0 : (_keystoneConfig$ui2$p = _keystoneConfig$ui2.pageMiddleware) === null || _keystoneConfig$ui2$p === void 0 ? void 0 : _keystoneConfig$ui2$p.call(_keystoneConfig$ui2, args));
503
494
  },
504
- enableSessionItem: true,
505
495
  isAccessAllowed: async context => {
506
496
  var _keystoneConfig$ui3;
507
497
 
@@ -530,9 +520,6 @@ function createAuth(_ref) {
530
520
  resolver,
531
521
  session,
532
522
  lists: _objectSpread({}, keystoneConfig.lists),
533
- experimental: _objectSpread(_objectSpread({}, keystoneConfig.experimental), {}, {
534
- generateNodeAPI: true
535
- }),
536
523
  extendGraphqlSchema: existingExtendGraphQLSchema ? schema => existingExtendGraphQLSchema(extendGraphqlSchema(schema)) : extendGraphqlSchema
537
524
  });
538
525
  };
@@ -137,21 +137,12 @@ const getSchemaExtension = _ref => {
137
137
  };
138
138
 
139
139
  const template = `
140
+ import { getContext } from '@keystone-6/core/context';
140
141
  import getNextAuthPage from '@opensaas/keystone-nextjs-auth/pages/NextAuthPage';
141
142
  import keystoneConfig from '../../../../../keystone';
142
- import { PrismaClient } from '.prisma/client';
143
- import { createQueryAPI } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/node-api';
144
-
145
- const cleanConfig = (config) => {
146
- const { db, ...rest } = config;
147
- if (db) {
148
- const { onConnect, ...restDB } = db;
149
- return { ...rest, db: restDB };
150
- }
151
- return rest;
152
- };
143
+ import * as PrismaModule from '.prisma/client';
153
144
 
154
- const keystoneQueryAPI = global.keystoneQueryAPI || createQueryAPI(cleanConfig(keystoneConfig), PrismaClient);
145
+ const keystoneQueryAPI = global.keystoneQueryAPI || getContext(keystoneConfig, PrismaModule).sudo().query;
155
146
 
156
147
  if (process.env.NODE_ENV !== 'production') globalThis.keystoneQueryAPI = keystoneQueryAPI
157
148
 
@@ -469,7 +460,6 @@ function createAuth(_ref) {
469
460
 
470
461
  return (await pageMiddleware(args)) ?? (keystoneConfig === null || keystoneConfig === void 0 ? void 0 : (_keystoneConfig$ui2 = keystoneConfig.ui) === null || _keystoneConfig$ui2 === void 0 ? void 0 : (_keystoneConfig$ui2$p = _keystoneConfig$ui2.pageMiddleware) === null || _keystoneConfig$ui2$p === void 0 ? void 0 : _keystoneConfig$ui2$p.call(_keystoneConfig$ui2, args));
471
462
  },
472
- enableSessionItem: true,
473
463
  isAccessAllowed: async context => {
474
464
  var _context$req, _keystoneConfig$ui3;
475
465
 
@@ -503,9 +493,6 @@ function createAuth(_ref) {
503
493
  resolver,
504
494
  session,
505
495
  lists: _objectSpread({}, keystoneConfig.lists),
506
- experimental: _objectSpread(_objectSpread({}, keystoneConfig.experimental), {}, {
507
- generateNodeAPI: true
508
- }),
509
496
  extendGraphqlSchema: existingExtendGraphQLSchema ? schema => existingExtendGraphQLSchema(extendGraphqlSchema(schema)) : extendGraphqlSchema
510
497
  });
511
498
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensaas/keystone-nextjs-auth",
3
- "version": "24.1.0",
3
+ "version": "25.0.0",
4
4
  "repository": "https://github.com/opensaasau/keystone-nextjs-auth",
5
5
  "license": "MIT",
6
6
  "main": "dist/opensaas-keystone-nextjs-auth.cjs.js",
@@ -13,19 +13,16 @@
13
13
  "cross-fetch": "^3.1.5",
14
14
  "ejs": "^3.1.8",
15
15
  "fast-deep-equal": "^3.1.3",
16
- "next-auth": "^4.10.3"
16
+ "next-auth": "^4.14.0"
17
17
  },
18
18
  "devDependencies": {
19
- "@keystone-6/core": "^2.2.0",
19
+ "@keystone-6/core": "3.0.0",
20
20
  "react": "^18.2.0"
21
21
  },
22
22
  "peerDependencies": {
23
- "@keystone-6/core": "^2.2.0",
23
+ "@keystone-6/core": "3.0.0",
24
24
  "react": "^18.2.0"
25
25
  },
26
- "engines": {
27
- "node": "^14.13 || >= 16.13"
28
- },
29
26
  "publishConfig": {
30
27
  "access": "public"
31
28
  },
package/src/index.ts CHANGED
@@ -14,7 +14,7 @@ import { Provider } from 'next-auth/providers';
14
14
 
15
15
  import * as cookie from 'cookie';
16
16
 
17
- import { Session } from 'next-auth';
17
+ import { JWT, Session } from 'next-auth';
18
18
  import { nextConfigTemplate } from './templates/next-config';
19
19
  // import * as Path from 'path';
20
20
 
@@ -199,17 +199,17 @@ export function createAuth<GeneratedListTypes extends BaseListTypeInfo>({
199
199
  ...sessionStrategy,
200
200
  get: async ({ req, createContext }) => {
201
201
  const pathname = url.parse(req?.url!).pathname!;
202
- let nextSession: Session;
202
+ let nextSession: Session | JWT | null;
203
203
  if (pathname.includes('/api/auth')) {
204
204
  return;
205
205
  }
206
206
  const sudoContext = createContext({ sudo: true });
207
207
 
208
208
  if (req.headers?.authorization?.split(' ')[0] === 'Bearer') {
209
- nextSession = (await getToken({
209
+ nextSession = await getToken({
210
210
  req,
211
211
  secret: sessionSecret,
212
- })) as Session;
212
+ });
213
213
  } else {
214
214
  nextSession = (await getSession({ req })) as Session;
215
215
  }
@@ -284,7 +284,6 @@ export function createAuth<GeneratedListTypes extends BaseListTypeInfo>({
284
284
  getAdditionalFiles: [...(keystoneConfig.ui?.getAdditionalFiles || []), getAdditionalFiles],
285
285
  pageMiddleware: async args =>
286
286
  (await pageMiddleware(args)) ?? keystoneConfig?.ui?.pageMiddleware?.(args),
287
- enableSessionItem: true,
288
287
  isAccessAllowed: async (context: KeystoneContext) => {
289
288
  const { req } = context;
290
289
  const pathname = url.parse(req?.url!).pathname!;
@@ -326,10 +325,6 @@ export function createAuth<GeneratedListTypes extends BaseListTypeInfo>({
326
325
  lists: {
327
326
  ...keystoneConfig.lists,
328
327
  },
329
- experimental: {
330
- ...keystoneConfig.experimental,
331
- generateNodeAPI: true,
332
- },
333
328
  extendGraphqlSchema: existingExtendGraphQLSchema
334
329
  ? schema => existingExtendGraphQLSchema(extendGraphqlSchema(schema))
335
330
  : extendGraphqlSchema,
@@ -1,16 +1,20 @@
1
- import getNextAuthPage from '@opensaas-keystone/nextjs-auth/pages/NextAuthPage';
2
- import { nextAuthProviders as Providers } from '@opensaas-keystone/nextjs-auth';
1
+ import { getContext } from '@keystone-6/core/context';
2
+ import getNextAuthPage from '@opensaas/keystone-nextjs-auth/pages/NextAuthPage';
3
+ import keystoneConfig from '../../../../../keystone';
4
+ import * as PrismaModule from '.prisma/client';
5
+
6
+ const keystoneQueryAPI = global.keystoneQueryAPI || getContext(keystoneConfig, PrismaModule).sudo().query;
7
+
8
+ if (process.env.NODE_ENV !== 'production') globalThis.keystoneQueryAPI = keystoneQueryAPI
3
9
 
4
10
  export default getNextAuthPage({
11
+ autoCreate: <%= autoCreate %>,
5
12
  identityField: '<%= identityField %>',
6
- mutationName: '<%= gqlNames.authenticateItemWithPassword %>',
7
- providers:[ <% providers.forEach(provider => { %>
8
- Providers.<%= provider.name %>({
9
- <% const providerConf = provider.config;
10
- for (const key in providerConf) { %>
11
- <%= key %>: '<%= providerConf[key] %>',
12
- <%}%>
13
- }),
14
- <% }) %>
15
- ],
13
+ listKey: '<%= listKey %>',
14
+ pages: keystoneConfig.pages,
15
+ providers: keystoneConfig.providers,
16
+ query: keystoneQueryAPI,
17
+ resolver: keystoneConfig.resolver,
18
+ sessionData: '<%= sessionData %>',
19
+ sessionSecret: '<%= sessionSecret %>',
16
20
  });
@@ -2,21 +2,12 @@ import ejs from 'ejs';
2
2
  import { NextAuthTemplateProps } from '../pages/NextAuthPage';
3
3
 
4
4
  const template = `
5
+ import { getContext } from '@keystone-6/core/context';
5
6
  import getNextAuthPage from '@opensaas/keystone-nextjs-auth/pages/NextAuthPage';
6
7
  import keystoneConfig from '../../../../../keystone';
7
- import { PrismaClient } from '.prisma/client';
8
- import { createQueryAPI } from '@keystone-6/core/___internal-do-not-use-will-break-in-patch/node-api';
8
+ import * as PrismaModule from '.prisma/client';
9
9
 
10
- const cleanConfig = (config) => {
11
- const { db, ...rest } = config;
12
- if (db) {
13
- const { onConnect, ...restDB } = db;
14
- return { ...rest, db: restDB };
15
- }
16
- return rest;
17
- };
18
-
19
- const keystoneQueryAPI = global.keystoneQueryAPI || createQueryAPI(cleanConfig(keystoneConfig), PrismaClient);
10
+ const keystoneQueryAPI = global.keystoneQueryAPI || getContext(keystoneConfig, PrismaModule).sudo().query;
20
11
 
21
12
  if (process.env.NODE_ENV !== 'production') globalThis.keystoneQueryAPI = keystoneQueryAPI
22
13