diff --git a/apps/sim/lib/auth/session-response.test.ts b/apps/sim/lib/auth/session-response.test.ts index 14a68471ee..030431c7f3 100644 --- a/apps/sim/lib/auth/session-response.test.ts +++ b/apps/sim/lib/auth/session-response.test.ts @@ -19,6 +19,11 @@ describe('extractSessionDataFromAuthClientResult', () => { expect(extractSessionDataFromAuthClientResult({ data: session })).toEqual(session) }) + it('unwraps disabled-auth get-session responses wrapped by the auth client', () => { + const session = { user: { id: 'u1' }, session: { id: 's1' } } + expect(extractSessionDataFromAuthClientResult({ data: { data: session } })).toEqual(session) + }) + it('falls back to raw session payload shape', () => { const raw = { user: { id: 'u1' }, session: { id: 's1' } } expect(extractSessionDataFromAuthClientResult(raw)).toEqual(raw) diff --git a/apps/sim/lib/auth/session-response.ts b/apps/sim/lib/auth/session-response.ts index 262cc9a1bc..7e0a03afd6 100644 --- a/apps/sim/lib/auth/session-response.ts +++ b/apps/sim/lib/auth/session-response.ts @@ -7,7 +7,23 @@ export function extractSessionDataFromAuthClientResult(result: unknown): unknown // Expected shape from better-auth client: { data: } if ('data' in record) { - return (record as { data?: unknown }).data ?? null + const data = (record as { data?: unknown }).data + + if (!data || typeof data !== 'object') { + return null + } + + const dataRecord = data as Record + + if ('user' in dataRecord) { + return data + } + + if ('data' in dataRecord) { + return dataRecord.data ?? null + } + + return data } // Fallback for raw session payloads: { user, session }