From 3560ada8a547302f746f502efb7bc802bbf00660 Mon Sep 17 00:00:00 2001 From: Bereket Engida <86073083+Bekacru@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:22:56 +0300 Subject: [PATCH] fix: seralize session output (#448) --- .../better-auth/src/db/internal-adapter.ts | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/better-auth/src/db/internal-adapter.ts b/packages/better-auth/src/db/internal-adapter.ts index 552791519f..fe208a457b 100644 --- a/packages/better-auth/src/db/internal-adapter.ts +++ b/packages/better-auth/src/db/internal-adapter.ts @@ -2,7 +2,14 @@ import type { BetterAuthOptions } from "../types"; import type { Adapter, Where } from "../types/adapter"; import { getDate } from "../utils/date"; import { getAuthTables } from "./get-tables"; -import type { Account, Session, User, Verification } from "./schema"; +import { + parseSessionOutput, + parseUserOutput, + type Account, + type Session, + type User, + type Verification, +} from "./schema"; import { generateId } from "../utils/id"; import { getWithHooks } from "./with-hooks"; import { getIp } from "../utils/get-request-ip"; @@ -197,16 +204,18 @@ export const createInternalAdapter = ( const sessionStringified = await secondaryStorage.get(sessionId); if (sessionStringified) { const s = JSON.parse(sessionStringified); + const parsedSession = parseSessionOutput(ctx.options, { + ...s.session, + expiresAt: new Date(s.session.expiresAt), + }); + const parsedUser = parseUserOutput(ctx.options, { + ...s.user, + createdAt: new Date(s.user.createdAt), + updatedAt: new Date(s.user.updatedAt), + }); return { - session: { - ...s.session, - expiresAt: new Date(s.session.expiresAt), - }, - user: { - ...s.user, - createdAt: new Date(s.user.createdAt), - updatedAt: new Date(s.user.updatedAt), - }, + session: parsedSession, + user: parsedUser, } as { session: Session; user: User; @@ -242,9 +251,13 @@ export const createInternalAdapter = ( if (!user) { return null; } + const parsedUser = parseUserOutput( + ctx.options, + convertFromDB(tables.user.fields, user)!, + ); return { - session, - user: convertFromDB(tables.user.fields, user)!, + session: parseSessionOutput(ctx.options, session), + user: parsedUser, }; }, findSessions: async (sessionIds: string[]) => {