From 0ffbb6233ae192b211bbc7e951b2d5200a3bb526 Mon Sep 17 00:00:00 2001 From: Maxwell <145994855+ping-maxwell@users.noreply.github.com> Date: Thu, 6 Mar 2025 06:30:10 +1000 Subject: [PATCH] fix(api-key): creating API keys metadata always returns null (#1698) --- .../better-auth/src/plugins/api-key/api-key.test.ts | 12 ++++++++++++ .../src/plugins/api-key/routes/create-api-key.ts | 10 ++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/better-auth/src/plugins/api-key/api-key.test.ts b/packages/better-auth/src/plugins/api-key/api-key.test.ts index e5a8cae01b..4a0ea27f95 100644 --- a/packages/better-auth/src/plugins/api-key/api-key.test.ts +++ b/packages/better-auth/src/plugins/api-key/api-key.test.ts @@ -489,6 +489,18 @@ describe("api-key", async () => { expect(apiKey).not.toBeNull(); expect(apiKey.metadata).toEqual(metadata); + + const res = await auth.api.getApiKey({ + query: { + id: apiKey.id, + }, + headers, + }); + + expect(res).not.toBeNull(); + if (res) { + expect(res.metadata).toEqual(metadata); + } }); it("create API key's returned metadata should be an object", async () => { diff --git a/packages/better-auth/src/plugins/api-key/routes/create-api-key.ts b/packages/better-auth/src/plugins/api-key/routes/create-api-key.ts index b6779d2049..f94eb38f0e 100644 --- a/packages/better-auth/src/plugins/api-key/routes/create-api-key.ts +++ b/packages/better-auth/src/plugins/api-key/routes/create-api-key.ts @@ -275,14 +275,8 @@ export function createApiKey({ }; if (metadata) { - const parseMetadata = parseInputData( - data, - apiKeySchema({ - rateLimitMax: opts.rateLimit.maxRequests!, - timeWindow: opts.rateLimit.timeWindow!, - }).apikey, - ); - data.metadata = parseMetadata.metadata ?? null; + //@ts-expect-error - we intentionally save the metadata as string on DB. + data.metadata = schema.apikey.fields.metadata.transform.input(metadata); } const apiKey = await ctx.context.adapter.create({