From b52713b1f85ec02622dd3b5679f31ea9e2c0186c Mon Sep 17 00:00:00 2001 From: Josh Calder Date: Tue, 20 Dec 2022 15:23:24 +1100 Subject: [PATCH] Fixes GraphQL errors when using `@keystone-6/auth` (#8182) --- .changeset/early-suns-knock.md | 5 +++++ .changeset/good-monkeys-complain.md | 5 +++++ packages/auth/src/gql/getBaseAuthSchema.ts | 13 ++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 .changeset/early-suns-knock.md create mode 100644 .changeset/good-monkeys-complain.md diff --git a/.changeset/early-suns-knock.md b/.changeset/early-suns-knock.md new file mode 100644 index 00000000000..d430c1545ad --- /dev/null +++ b/.changeset/early-suns-knock.md @@ -0,0 +1,5 @@ +--- +'@keystone-6/auth': patch +--- + +Fixes GraphQL error when using `autoincrement` for auth list id diff --git a/.changeset/good-monkeys-complain.md b/.changeset/good-monkeys-complain.md new file mode 100644 index 00000000000..6e7c84849d4 --- /dev/null +++ b/.changeset/good-monkeys-complain.md @@ -0,0 +1,5 @@ +--- +'@keystone-6/auth': patch +--- + +Fixes GraphQL error when `sessionStrategy.start` returns null or undefined diff --git a/packages/auth/src/gql/getBaseAuthSchema.ts b/packages/auth/src/gql/getBaseAuthSchema.ts index 010c5ffbff3..1e54686cd4b 100644 --- a/packages/auth/src/gql/getBaseAuthSchema.ts +++ b/packages/auth/src/gql/getBaseAuthSchema.ts @@ -54,7 +54,10 @@ export function getBaseAuthSchema({ resolveType: (root, context) => context.session?.listKey, }), resolve(root, args, { session, db }) { - if (typeof session?.itemId === 'string' && typeof session.listKey === 'string') { + if ( + (typeof session?.itemId === 'string' || typeof session.itemId === 'number') && + typeof session.listKey === 'string' + ) { return db[session.listKey].findOne({ where: { id: session.itemId } }); } return null; @@ -88,13 +91,17 @@ export function getBaseAuthSchema({ } // Update system state - const sessionToken = (await context.sessionStrategy.start({ + const sessionToken = await context.sessionStrategy.start({ data: { listKey, itemId: result.item.id, }, context, - })) as string; + }); + // return Failure if sessionStrategy.start() returns null + if (typeof sessionToken !== 'string' || sessionToken.length === 0) { + return { code: 'FAILURE', message: 'Failed to start session.' }; + } return { sessionToken, item: result.item }; }, }),