From 0a77104668f071b5bcbc7f6c60546c55ec0d9e49 Mon Sep 17 00:00:00 2001 From: Juyeong Maing Date: Mon, 13 Feb 2023 15:35:19 +0900 Subject: [PATCH] fix error on extra property this change is required for KakaoProvider --- packages/adapter-prisma/src/index.ts | 42 ++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/adapter-prisma/src/index.ts b/packages/adapter-prisma/src/index.ts index ed1bb12c45..f5764d48e0 100644 --- a/packages/adapter-prisma/src/index.ts +++ b/packages/adapter-prisma/src/index.ts @@ -1,9 +1,30 @@ import type { PrismaClient, Prisma } from "@prisma/client" import type { Adapter, AdapterAccount } from "next-auth/adapters" +function filterKey(obj: T, ...keys: string[]): T { + return Object.fromEntries( + Object.entries(obj).filter(([key]) => keys.includes(key)) + ) as T; +} + export function PrismaAdapter(p: PrismaClient): Adapter { return { - createUser: (data) => p.user.create({ data }), + createUser: (data) => + p.user.create({ + data: filterKey( + data, + "id", + "image", + "name", + "email", + "emailVerified", + "createdAt", + "updatedAt", + "role", + "accounts", + "sessions", + ), + }), getUser: (id) => p.user.findUnique({ where: { id } }), getUserByEmail: (email) => p.user.findUnique({ where: { email } }), async getUserByAccount(provider_providerAccountId) { @@ -16,7 +37,24 @@ export function PrismaAdapter(p: PrismaClient): Adapter { updateUser: ({ id, ...data }) => p.user.update({ where: { id }, data }), deleteUser: (id) => p.user.delete({ where: { id } }), linkAccount: (data) => - p.account.create({ data }) as unknown as AdapterAccount, + p.account.create({ + data: filterKey( + data, + "id", + "provider", + "providerAccountId", + "access_token", + "token_type", + "id_token", + "refresh_token", + "scope", + "expires_at", + "session_state", + "user", + "type", + "userId", + ), + }) as unknown as AdapterAccount, unlinkAccount: (provider_providerAccountId) => p.account.delete({ where: { provider_providerAccountId },