From 8b754f9fe6b412ad6434acf01e5483453b63c326 Mon Sep 17 00:00:00 2001 From: imbytecat Date: Mon, 30 Mar 2026 21:26:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9B=86=E6=88=90=20Better=20Auth=20?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/server/src/server/auth/client.ts | 3 +++ apps/server/src/server/auth/functions.ts | 8 ++++++++ apps/server/src/server/auth/index.ts | 25 ++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 apps/server/src/server/auth/client.ts create mode 100644 apps/server/src/server/auth/functions.ts create mode 100644 apps/server/src/server/auth/index.ts diff --git a/apps/server/src/server/auth/client.ts b/apps/server/src/server/auth/client.ts new file mode 100644 index 0000000..fc6c795 --- /dev/null +++ b/apps/server/src/server/auth/client.ts @@ -0,0 +1,3 @@ +import { createAuthClient } from 'better-auth/react' + +export const authClient = createAuthClient() diff --git a/apps/server/src/server/auth/functions.ts b/apps/server/src/server/auth/functions.ts new file mode 100644 index 0000000..9e5445b --- /dev/null +++ b/apps/server/src/server/auth/functions.ts @@ -0,0 +1,8 @@ +import { createServerFn } from '@tanstack/react-start' +import { getRequestHeaders } from '@tanstack/react-start/server' +import { auth } from '@/server/auth' + +export const getSession = createServerFn({ method: 'GET' }).handler(async () => { + const headers = getRequestHeaders() + return await auth.api.getSession({ headers }) +}) diff --git a/apps/server/src/server/auth/index.ts b/apps/server/src/server/auth/index.ts new file mode 100644 index 0000000..6920fa1 --- /dev/null +++ b/apps/server/src/server/auth/index.ts @@ -0,0 +1,25 @@ +import { betterAuth } from 'better-auth' +import { drizzleAdapter } from 'better-auth/adapters/drizzle' +import { tanstackStartCookies } from 'better-auth/tanstack-start' +import { env } from '@/env' +import * as authSchema from '@/server/auth/schema' +import { getDB } from '@/server/db' + +export const auth = betterAuth({ + baseURL: env.BETTER_AUTH_URL, + secret: env.BETTER_AUTH_SECRET, + database: drizzleAdapter(getDB(), { + provider: 'pg', + schema: authSchema, + }), + emailAndPassword: { enabled: true }, + session: { + expiresIn: 60 * 60 * 24 * 7, + updateAge: 60 * 60 * 24, + cookieCache: { + enabled: true, + maxAge: 5 * 60, + }, + }, + plugins: [tanstackStartCookies()], +})