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()], +})