@delmaredigital/payload-better-auth 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +734 -0
- package/dist/adapter/index.d.mts +70 -0
- package/dist/adapter/index.d.ts +70 -0
- package/dist/adapter/index.js +368 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/index.mjs +366 -0
- package/dist/adapter/index.mjs.map +1 -0
- package/dist/client.d.mts +1 -0
- package/dist/client.d.ts +1 -0
- package/dist/client.js +12 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +3 -0
- package/dist/client.mjs.map +1 -0
- package/dist/index.d.mts +120 -0
- package/dist/index.d.ts +120 -0
- package/dist/index.js +611 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +603 -0
- package/dist/index.mjs.map +1 -0
- package/dist/plugin/index.d.mts +78 -0
- package/dist/plugin/index.d.ts +78 -0
- package/dist/plugin/index.js +86 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/index.mjs +82 -0
- package/dist/plugin/index.mjs.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/adapter/index.ts","../src/adapter/collections.ts","../src/plugin/index.ts","../src/utils/session.ts"],"names":["result","doc","getAuthTables"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Payload CMS Adapter for Better Auth\n *\n * A clean adapter that bridges Better Auth to Payload collections.\n * Follows the same factory pattern as payload-auth for compatibility.\n *\n * @packageDocumentation\n */\n\nimport type { Adapter, BetterAuthOptions, Where } from 'better-auth'\nimport type { BasePayload, Where as PayloadWhere, CollectionSlug } from 'payload'\n\nexport type PayloadAdapterConfig = {\n /**\n * The Payload instance or a function that returns it.\n * Use a function for lazy initialization.\n */\n payloadClient: BasePayload | (() => Promise<BasePayload>)\n\n /**\n * Adapter configuration options\n */\n adapterConfig: {\n /**\n * Map Better Auth model names to Payload collection slugs.\n * Defaults: { user: 'users', session: 'sessions', account: 'accounts', verification: 'verifications' }\n */\n collections?: Record<string, string>\n\n /**\n * Enable debug logging for troubleshooting\n */\n enableDebugLogs?: boolean\n\n /**\n * ID type used by Payload\n * - 'number' for SERIAL/auto-increment (recommended - Payload default)\n * - 'text' for UUID (requires idType: 'uuid' in Payload's db adapter)\n */\n idType: 'number' | 'text'\n }\n}\n\nconst DEFAULT_COLLECTIONS: Record<string, string> = {\n user: 'users',\n session: 'sessions',\n account: 'accounts',\n verification: 'verifications',\n}\n\n/**\n * Creates a Better Auth adapter that uses Payload CMS as the database.\n *\n * Returns a factory function that Better Auth calls with its options.\n * This matches the pattern used by other Better Auth adapters.\n *\n * @example\n * ```ts\n * import { payloadAdapter } from '@delmare/payload-better-auth/adapter'\n *\n * const auth = betterAuth({\n * database: payloadAdapter({\n * payloadClient: payload,\n * adapterConfig: {\n * idType: 'number', // Use Payload's default SERIAL IDs\n * collections: { user: 'users' },\n * },\n * }),\n * // Required when using serial/integer IDs\n * advanced: {\n * database: {\n * generateId: 'serial',\n * },\n * },\n * })\n * ```\n */\nexport function payloadAdapter({\n payloadClient,\n adapterConfig,\n}: PayloadAdapterConfig): (options: BetterAuthOptions) => Adapter {\n const { collections = {}, enableDebugLogs = false, idType } = adapterConfig\n const finalCollections = { ...DEFAULT_COLLECTIONS, ...collections }\n\n const log = (...args: unknown[]) => {\n if (enableDebugLogs) console.log('[payload-adapter]', ...args)\n }\n\n async function resolvePayloadClient(): Promise<BasePayload> {\n return typeof payloadClient === 'function'\n ? await payloadClient()\n : payloadClient\n }\n\n function getCollection(model: string): CollectionSlug {\n return (finalCollections[model] ?? model) as CollectionSlug\n }\n\n /**\n * Transform field name for where clause (Better Auth → Payload)\n * Converts relationship fields like `userId` to `user`\n */\n function transformFieldName(fieldName: string): string {\n if (\n fieldName.endsWith('Id') &&\n fieldName !== 'id' &&\n fieldName !== 'accountId' &&\n fieldName !== 'providerId'\n ) {\n return fieldName.slice(0, -2)\n }\n return fieldName\n }\n\n /**\n * Convert Better Auth where clause to Payload where clause\n */\n function convertWhere(where?: Where[]): PayloadWhere {\n if (!where || where.length === 0) return {}\n\n if (where.length === 1) {\n const w = where[0]\n return {\n [transformFieldName(w.field)]: convertOperator(w.operator, w.value),\n }\n }\n\n const andConditions = where.filter((w) => w.connector !== 'OR')\n const orConditions = where.filter((w) => w.connector === 'OR')\n\n const result: PayloadWhere = {}\n\n if (andConditions.length > 0) {\n result.and = andConditions.map((w) => ({\n [transformFieldName(w.field)]: convertOperator(w.operator, w.value),\n }))\n }\n\n if (orConditions.length > 0) {\n result.or = orConditions.map((w) => ({\n [transformFieldName(w.field)]: convertOperator(w.operator, w.value),\n }))\n }\n\n return result\n }\n\n function convertOperator(\n operator: string | undefined,\n value: unknown\n ): Record<string, unknown> {\n switch (operator) {\n case 'eq':\n return { equals: value }\n case 'ne':\n return { not_equals: value }\n case 'gt':\n return { greater_than: value }\n case 'gte':\n return { greater_than_equal: value }\n case 'lt':\n return { less_than: value }\n case 'lte':\n return { less_than_equal: value }\n case 'in':\n return { in: value }\n case 'contains':\n return { contains: value }\n case 'starts_with':\n return { like: `${value}%` }\n case 'ends_with':\n return { like: `%${value}` }\n default:\n return { equals: value }\n }\n }\n\n function extractSingleId(where: PayloadWhere): string | number | null {\n if ('and' in where || 'or' in where) return null\n\n const idCondition = where.id\n if (\n idCondition &&\n typeof idCondition === 'object' &&\n 'equals' in idCondition\n ) {\n const value = idCondition.equals\n if (typeof value === 'string' || typeof value === 'number') {\n return value\n }\n }\n\n return null\n }\n\n /**\n * Transform input data (Better Auth → Payload field names)\n * Also converts relationship IDs to the correct type based on idType\n */\n function transformInput(\n data: Record<string, unknown>\n ): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(data)) {\n if (\n key.endsWith('Id') &&\n key !== 'id' &&\n key !== 'accountId' &&\n key !== 'providerId'\n ) {\n // Transform userId -> user and convert to correct ID type for relationships\n const fieldName = key.slice(0, -2)\n if (idType === 'number' && typeof value === 'string') {\n const num = parseInt(value, 10)\n result[fieldName] = isNaN(num) ? value : num\n } else {\n result[fieldName] = value\n }\n } else {\n result[key] = value\n }\n }\n\n return result\n }\n\n /**\n * Transform output data (Payload → Better Auth field names)\n */\n function transformOutput<T>(doc: T): T {\n if (!doc || typeof doc !== 'object') return doc\n\n const result = { ...doc } as Record<string, unknown>\n\n if ('id' in result && result.id !== undefined) {\n result.id = String(result.id)\n }\n\n for (const [key, value] of Object.entries(result)) {\n if (value && typeof value === 'object' && 'id' in value) {\n result[`${key}Id`] = String((value as { id: unknown }).id)\n delete result[key]\n } else if (\n typeof value === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/.test(value)\n ) {\n result[key] = new Date(value)\n }\n }\n\n return result as T\n }\n\n function convertId(id: string | number): string | number {\n if (idType === 'number' && typeof id === 'string') {\n const num = parseInt(id, 10)\n return isNaN(num) ? id : num\n }\n if (idType === 'text' && typeof id === 'number') {\n return String(id)\n }\n return id\n }\n\n /**\n * Handle join requests - fetch related data\n */\n async function handleJoins(\n payload: BasePayload,\n doc: Record<string, unknown>,\n model: string,\n join: Record<string, boolean | { limit?: number }>\n ): Promise<Record<string, unknown>> {\n const result = { ...doc }\n\n for (const [joinKey, joinConfig] of Object.entries(join)) {\n if (!joinConfig) continue\n\n const limit = typeof joinConfig === 'object' ? joinConfig.limit : undefined\n\n log('handleJoins', { model, joinKey, docId: doc.id })\n\n if (model === 'user' && joinKey === 'account') {\n const accounts = await payload.find({\n collection: getCollection('account'),\n where: { user: { equals: doc.id } },\n limit: limit ?? 100,\n depth: 0,\n })\n result[joinKey] = accounts.docs.map((a) => transformOutput(a))\n } else if (model === 'session' && joinKey === 'user') {\n const userId = doc.userId as string\n if (userId) {\n try {\n const user = await payload.findByID({\n collection: getCollection('user'),\n id: userId,\n depth: 0,\n })\n result[joinKey] = transformOutput(user)\n } catch {\n result[joinKey] = null\n }\n }\n } else if (model === 'account' && joinKey === 'user') {\n const userId = doc.userId as string\n if (userId) {\n try {\n const user = await payload.findByID({\n collection: getCollection('user'),\n id: userId,\n depth: 0,\n })\n result[joinKey] = transformOutput(user)\n } catch {\n result[joinKey] = null\n }\n }\n }\n // Extensibility: Add more join patterns here for plugins\n }\n\n return result\n }\n\n return (_options: BetterAuthOptions): Adapter => {\n log('Adapter initialized', { collections: finalCollections })\n\n return {\n id: 'payload-adapter',\n\n async create<T extends Record<string, unknown>, R = T>({\n model,\n data,\n }: {\n model: string\n data: Omit<T, 'id'>\n select?: string[]\n forceAllowId?: boolean\n }): Promise<R> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const transformedData = transformInput(data as Record<string, unknown>)\n\n log('create', { collection, data: transformedData })\n\n try {\n const result = await payload.create({\n collection,\n data: transformedData,\n depth: 0,\n })\n return transformOutput(result) as R\n } catch (error) {\n console.error('[payload-adapter] create failed:', {\n collection,\n model,\n error: error instanceof Error ? error.message : error,\n })\n throw error\n }\n },\n\n async findOne<T>({\n model,\n where,\n select: _select,\n join,\n }: {\n model: string\n where: Where[]\n select?: string[]\n join?: Record<string, boolean | { limit?: number }>\n }): Promise<T | null> {\n try {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n\n const id = extractSingleId(payloadWhere)\n if (id) {\n try {\n const result = await payload.findByID({\n collection,\n id: convertId(id),\n depth: 1,\n })\n let doc = transformOutput(result) as unknown as Record<\n string,\n unknown\n >\n if (join) {\n doc = await handleJoins(payload, doc, model, join)\n }\n return doc as unknown as T\n } catch (error) {\n if (\n error instanceof Error &&\n 'status' in error &&\n (error as Error & { status: number }).status === 404\n ) {\n return null\n }\n throw error\n }\n }\n\n const result = await payload.find({\n collection,\n where: payloadWhere,\n limit: 1,\n depth: 1,\n })\n\n let doc: Record<string, unknown> | null = result.docs[0]\n ? (transformOutput(result.docs[0]) as unknown as Record<\n string,\n unknown\n >)\n : null\n\n if (doc && join) {\n doc = await handleJoins(payload, doc, model, join)\n }\n\n return doc as unknown as T | null\n } catch (error) {\n console.error('[payload-adapter] findOne FAILED', {\n model,\n where,\n error,\n })\n throw error\n }\n },\n\n async findMany<T>({\n model,\n where,\n limit,\n offset,\n sortBy,\n }: {\n model: string\n where?: Where[]\n limit?: number\n sortBy?: { field: string; direction: 'asc' | 'desc' }\n offset?: number\n join?: Record<string, boolean | { limit?: number }>\n }): Promise<T[]> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n\n const result = await payload.find({\n collection,\n where: payloadWhere,\n limit: limit ?? 100,\n page: offset ? Math.floor(offset / (limit ?? 100)) + 1 : 1,\n sort: sortBy\n ? `${sortBy.direction === 'desc' ? '-' : ''}${sortBy.field}`\n : undefined,\n depth: 1,\n })\n\n return result.docs.map((doc) => transformOutput(doc)) as T[]\n },\n\n async update<T>({\n model,\n where,\n update: data,\n }: {\n model: string\n where: Where[]\n update: Record<string, unknown>\n }): Promise<T | null> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n const transformedData = transformInput(data)\n\n const id = extractSingleId(payloadWhere)\n if (id) {\n const result = await payload.update({\n collection,\n id: convertId(id),\n data: transformedData,\n depth: 1,\n })\n return transformOutput(result) as T\n }\n\n const result = await payload.update({\n collection,\n where: payloadWhere,\n data: transformedData,\n depth: 1,\n })\n\n return result.docs[0] ? (transformOutput(result.docs[0]) as T) : null\n },\n\n async updateMany({\n model,\n where,\n update: data,\n }: {\n model: string\n where: Where[]\n update: Record<string, unknown>\n }): Promise<number> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n const transformedData = transformInput(data)\n\n const result = await payload.update({\n collection,\n where: payloadWhere,\n data: transformedData,\n depth: 0,\n })\n\n return result.docs.length\n },\n\n async delete({ model, where }: { model: string; where: Where[] }): Promise<void> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n\n const id = extractSingleId(payloadWhere)\n if (id) {\n await payload.delete({ collection, id: convertId(id) })\n return\n }\n\n await payload.delete({ collection, where: payloadWhere })\n },\n\n async deleteMany({\n model,\n where,\n }: {\n model: string\n where: Where[]\n }): Promise<number> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n\n const result = await payload.delete({\n collection,\n where: payloadWhere,\n })\n\n return result.docs.length\n },\n\n async count({\n model,\n where,\n }: {\n model: string\n where?: Where[]\n }): Promise<number> {\n const payload = await resolvePayloadClient()\n const collection = getCollection(model)\n const payloadWhere = convertWhere(where)\n\n const result = await payload.count({\n collection,\n where: payloadWhere,\n })\n\n return result.totalDocs\n },\n\n async transaction(callback) {\n return callback(this)\n },\n }\n }\n}\n\nexport type { Adapter, BetterAuthOptions }\n","/**\n * Auto-generate Payload collections from Better Auth schema\n *\n * @packageDocumentation\n */\n\nimport type { Config, CollectionConfig, Field, Plugin } from 'payload'\nimport type { BetterAuthOptions } from 'better-auth'\nimport { getAuthTables } from 'better-auth/db'\n\nexport type BetterAuthCollectionsOptions = {\n /**\n * Better Auth options. Pass the same options you use for betterAuth().\n * The plugin reads the schema to generate collections.\n */\n betterAuthOptions?: BetterAuthOptions\n\n /**\n * Override collection slugs (e.g., { user: 'users', session: 'sessions' })\n */\n slugOverrides?: Record<string, string>\n\n /**\n * Collections to skip (they already exist in your config)\n * Default: ['user'] - assumes you have a Users collection\n */\n skipCollections?: string[]\n\n /**\n * Admin group name for generated collections\n * Default: 'Auth'\n */\n adminGroup?: string\n\n /**\n * Custom access control for generated collections.\n * By default, only admins can read/delete, and create/update are disabled.\n */\n access?: CollectionConfig['access']\n}\n\nconst DEFAULT_SLUG_OVERRIDES: Record<string, string> = {\n user: 'users',\n session: 'sessions',\n account: 'accounts',\n verification: 'verifications',\n}\n\nfunction mapFieldType(\n type: string,\n fieldName: string,\n hasReferences: boolean\n): Field['type'] {\n if (hasReferences) {\n return 'relationship'\n }\n\n switch (type) {\n case 'boolean':\n return 'checkbox'\n case 'number':\n return 'number'\n case 'date':\n return 'date'\n case 'string':\n if (fieldName === 'email') return 'email'\n return 'text'\n default:\n return 'text'\n }\n}\n\nfunction extractRelationTarget(\n fieldName: string,\n slugOverrides: Record<string, string>\n): string {\n const base = fieldName.replace(/(_id|Id)$/, '')\n const pluralized = base.endsWith('s') ? base : `${base}s`\n return slugOverrides[base] ?? slugOverrides[pluralized] ?? pluralized\n}\n\nfunction generateCollection(\n modelKey: string,\n table: ReturnType<typeof getAuthTables>[string],\n slugOverrides: Record<string, string>,\n adminGroup: string,\n customAccess?: BetterAuthCollectionsOptions['access']\n): CollectionConfig {\n const slug = slugOverrides[modelKey] ?? table.modelName ?? modelKey\n const fields: Field[] = []\n\n for (const [fieldKey, fieldDef] of Object.entries(table.fields)) {\n if (['id', 'createdAt', 'updatedAt'].includes(fieldKey)) {\n continue\n }\n\n const fieldName = fieldDef.fieldName ?? fieldKey\n const hasReferences = fieldDef.references !== undefined\n const fieldType = mapFieldType(fieldDef.type as string, fieldKey, hasReferences)\n\n if (fieldType === 'relationship') {\n const relationTo = fieldDef.references?.model\n ? slugOverrides[fieldDef.references.model] ?? fieldDef.references.model\n : extractRelationTarget(fieldKey, slugOverrides)\n\n fields.push({\n name: fieldName.replace(/(_id|Id)$/, ''),\n type: 'relationship',\n relationTo,\n required: fieldDef.required ?? false,\n index: true,\n } as Field)\n continue\n }\n\n const field: Record<string, unknown> = {\n name: fieldName,\n type: fieldType,\n }\n\n if (fieldDef.required) field.required = true\n if (fieldDef.unique) {\n field.unique = true\n field.index = true\n }\n\n if (fieldDef.defaultValue !== undefined) {\n let defaultValue: unknown = fieldDef.defaultValue\n if (typeof defaultValue === 'function') {\n try {\n defaultValue = (defaultValue as () => unknown)()\n } catch {\n defaultValue = undefined\n }\n }\n if (defaultValue !== undefined && defaultValue !== null) {\n field.defaultValue = defaultValue\n }\n }\n\n fields.push(field as Field)\n }\n\n const titleField = ['name', 'email', 'title', 'identifier'].find((f) =>\n fields.some((field) => 'name' in field && field.name === f)\n )\n\n // Default access: admin-only read/delete, disabled create/update\n const defaultAccess: CollectionConfig['access'] = {\n read: ({ req }) => (req.user as { role?: string } | undefined)?.role === 'admin',\n create: () => false,\n update: () => false,\n delete: ({ req }) => (req.user as { role?: string } | undefined)?.role === 'admin',\n }\n\n return {\n slug,\n admin: {\n useAsTitle: titleField ?? 'id',\n group: adminGroup,\n description: `Auto-generated from Better Auth schema (${modelKey})`,\n },\n access: customAccess ?? defaultAccess,\n fields,\n timestamps: true,\n }\n}\n\n/**\n * Payload plugin that auto-generates collections from Better Auth schema.\n *\n * @example\n * ```ts\n * import { betterAuthCollections } from '@delmare/payload-better-auth'\n *\n * export default buildConfig({\n * plugins: [\n * betterAuthCollections({\n * betterAuthOptions: { ... },\n * skipCollections: ['user'], // Define Users yourself\n * }),\n * ],\n * })\n * ```\n */\nexport function betterAuthCollections(\n options: BetterAuthCollectionsOptions = {}\n): Plugin {\n const {\n betterAuthOptions = {},\n slugOverrides = {},\n skipCollections = ['user'],\n adminGroup = 'Auth',\n access,\n } = options\n\n const finalSlugOverrides = { ...DEFAULT_SLUG_OVERRIDES, ...slugOverrides }\n\n return (incomingConfig: Config): Config => {\n const existingCollectionSlugs = new Set(\n (incomingConfig.collections ?? []).map((c) => c.slug)\n )\n\n const tables = getAuthTables(betterAuthOptions)\n const generatedCollections: CollectionConfig[] = []\n\n for (const [modelKey, table] of Object.entries(tables)) {\n if (skipCollections.includes(modelKey)) {\n continue\n }\n\n const slug = finalSlugOverrides[modelKey] ?? table.modelName ?? modelKey\n\n if (existingCollectionSlugs.has(slug)) {\n continue\n }\n\n const collection = generateCollection(\n modelKey,\n table,\n finalSlugOverrides,\n adminGroup,\n access\n )\n\n generatedCollections.push(collection)\n }\n\n\n return {\n ...incomingConfig,\n collections: [\n ...(incomingConfig.collections ?? []),\n ...generatedCollections,\n ],\n }\n }\n}\n","/**\n * Payload Plugins for Better Auth\n *\n * @packageDocumentation\n */\n\nimport type { Plugin, AuthStrategy, Payload, BasePayload } from 'payload'\nimport type { betterAuth } from 'better-auth'\n\nexport type Auth = ReturnType<typeof betterAuth>\nexport type PayloadWithAuth = BasePayload & { betterAuth: Auth }\n\nexport type CreateAuthFunction = (payload: BasePayload) => Auth\n\nexport type BetterAuthPluginOptions = {\n /**\n * Function that creates the Better Auth instance.\n * Called during Payload's onInit lifecycle.\n */\n createAuth: CreateAuthFunction\n}\n\n// Track auth instance for HMR\nlet authInstance: Auth | null = null\n\n/**\n * Payload plugin that initializes Better Auth.\n *\n * Better Auth is created in onInit (after Payload is ready) to avoid\n * circular dependency issues. The auth instance is then attached to\n * payload.betterAuth for access throughout the app.\n *\n * @example\n * ```ts\n * import { createBetterAuthPlugin } from '@delmare/payload-better-auth/plugin'\n *\n * export default buildConfig({\n * plugins: [\n * createBetterAuthPlugin({\n * createAuth: (payload) => betterAuth({\n * database: payloadAdapter({ payloadClient: payload, ... }),\n * // ... other options\n * }),\n * }),\n * ],\n * })\n * ```\n */\nexport function createBetterAuthPlugin(\n options: BetterAuthPluginOptions\n): Plugin {\n const { createAuth } = options\n\n return (incomingConfig) => {\n const existingOnInit = incomingConfig.onInit\n\n return {\n ...incomingConfig,\n onInit: async (payload) => {\n if (existingOnInit) {\n await existingOnInit(payload)\n }\n\n // Check if already attached (HMR scenario)\n if ('betterAuth' in payload) {\n return\n }\n\n // Reuse or create auth instance\n if (!authInstance) {\n try {\n authInstance = createAuth(payload)\n } catch (error) {\n console.error('[better-auth] Failed to create auth:', error)\n throw error\n }\n }\n\n // Attach to payload for global access\n Object.defineProperty(payload, 'betterAuth', {\n value: authInstance,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n },\n }\n }\n}\n\nexport type BetterAuthStrategyOptions = {\n /**\n * The collection slug for users\n * Default: 'users'\n */\n usersCollection?: string\n}\n\n/**\n * Payload auth strategy that uses Better Auth for authentication.\n *\n * Use this in your Users collection to authenticate via Better Auth sessions.\n *\n * @example\n * ```ts\n * import { betterAuthStrategy } from '@delmare/payload-better-auth/plugin'\n *\n * export const Users: CollectionConfig = {\n * slug: 'users',\n * auth: {\n * disableLocalStrategy: true,\n * strategies: [betterAuthStrategy()],\n * },\n * // ...\n * }\n * ```\n */\nexport function betterAuthStrategy(\n options: BetterAuthStrategyOptions = {}\n): AuthStrategy {\n const { usersCollection = 'users' } = options\n\n return {\n name: 'better-auth',\n authenticate: async ({\n payload,\n headers,\n }: {\n payload: Payload\n headers: Headers\n }) => {\n try {\n const payloadWithAuth = payload as PayloadWithAuth\n const auth = payloadWithAuth.betterAuth\n\n if (!auth) {\n console.error('Better Auth not initialized on payload instance')\n return { user: null }\n }\n\n const session = await auth.api.getSession({ headers })\n\n if (!session?.user?.id) {\n return { user: null }\n }\n\n const users = await payload.find({\n collection: usersCollection,\n where: { id: { equals: session.user.id } },\n limit: 1,\n depth: 0,\n })\n\n if (users.docs.length === 0) {\n return { user: null }\n }\n\n return {\n user: {\n ...users.docs[0],\n collection: usersCollection,\n _strategy: 'better-auth',\n },\n }\n } catch (error) {\n console.error('Better Auth strategy error:', error)\n return { user: null }\n }\n },\n }\n}\n\n/**\n * Reset the auth instance (useful for testing)\n */\nexport function resetAuthInstance(): void {\n authInstance = null\n}\n","/**\n * Server-side session utilities\n *\n * @packageDocumentation\n */\n\nimport type { BasePayload } from 'payload'\nimport type { PayloadWithAuth } from '../plugin'\n\nexport type Session = {\n user: {\n id: string\n email: string\n name?: string\n image?: string\n [key: string]: unknown\n }\n session: {\n id: string\n expiresAt: Date\n [key: string]: unknown\n }\n}\n\n/**\n * Get the current session from headers.\n *\n * @example\n * ```ts\n * import { headers } from 'next/headers'\n * import { getServerSession } from '@delmare/payload-better-auth'\n *\n * export default async function Page() {\n * const headersList = await headers()\n * const session = await getServerSession(payload, headersList)\n *\n * if (!session) {\n * redirect('/login')\n * }\n *\n * return <div>Hello {session.user.name}</div>\n * }\n * ```\n */\nexport async function getServerSession(\n payload: BasePayload,\n headers: Headers\n): Promise<Session | null> {\n try {\n const payloadWithAuth = payload as PayloadWithAuth\n\n if (!payloadWithAuth.betterAuth) {\n console.error('[session] Better Auth not initialized')\n return null\n }\n\n const session = await payloadWithAuth.betterAuth.api.getSession({ headers })\n return session as Session | null\n } catch (error) {\n console.error('[session] Error getting session:', error)\n return null\n }\n}\n\n/**\n * Get the current user from the session.\n *\n * @example\n * ```ts\n * import { headers } from 'next/headers'\n * import { getServerUser } from '@delmare/payload-better-auth'\n *\n * export default async function Page() {\n * const headersList = await headers()\n * const user = await getServerUser(payload, headersList)\n *\n * if (!user) {\n * redirect('/login')\n * }\n *\n * return <div>Hello {user.name}</div>\n * }\n * ```\n */\nexport async function getServerUser(\n payload: BasePayload,\n headers: Headers\n): Promise<Session['user'] | null> {\n const session = await getServerSession(payload, headers)\n return session?.user ?? null\n}\n"]}
|