diff --git a/.nuxtrc b/.nuxtrc index f610600..59f96be 100644 --- a/.nuxtrc +++ b/.nuxtrc @@ -1,2 +1,2 @@ -setups.nuxt-convex="0.0.1" +setups.nuxt-convex="0.0.6" setups.@nuxt/test-utils="3.23.0" \ No newline at end of file diff --git a/docs/content/5.integrations/1.better-auth.md b/docs/content/5.integrations/1.better-auth.md index d74f17d..c8e2455 100644 --- a/docs/content/5.integrations/1.better-auth.md +++ b/docs/content/5.integrations/1.better-auth.md @@ -3,40 +3,50 @@ title: Better Auth description: Use Convex as the database for Better Auth authentication. --- -# Better Auth Integration +Use Convex as the database backend for [Better Auth](https://better-auth.com) with `@onmax/nuxt-better-auth`. -Use Convex as the database backend for [Better Auth](https://better-auth.com) with the [`@onmax/nuxt-better-auth`](https://github.com/onmax/nuxt-better-auth) module. +`nuxt-convex` registers the `convex` database provider via the `better-auth:database:providers` hook. `@onmax/nuxt-better-auth` then generates `#auth/database` from that provider. -## How It Works +::important +This integration runs on the server. `auth.database.provider = 'convex'` is not available in `clientOnly` mode. +:: -- Auth runs on **Nuxt server** (SSR-compatible, route protection) -- Convex provides the **database** via HTTP adapter -- Uses `@convex-dev/better-auth` CRUD functions +::steps -## Setup - -### 1. Install Dependencies +### Install dependencies ```bash pnpm add @onmax/nuxt-better-auth @convex-dev/better-auth better-auth ``` -### 2. Configure Nuxt +### Configure Nuxt ```ts [nuxt.config.ts] export default defineNuxtConfig({ modules: ['nuxt-convex', '@onmax/nuxt-better-auth'], + auth: { + database: { + provider: 'convex', + // Optional override (highest priority). + // convexUrl: 'https://your-project.convex.cloud', + }, + }, }) ``` -### 3. Set Environment Variables +### Set environment variables ```bash [.env] CONVEX_URL=https://your-project.convex.cloud BETTER_AUTH_SECRET=your-secret-at-least-32-characters ``` -### 4. Create Server Auth Config +### Create Better Auth config files + +`@onmax/nuxt-better-auth` loads these files by default: + +- `server/auth.config.ts` +- `app/auth.config.ts` ```ts [server/auth.config.ts] import { defineServerAuth } from '@onmax/nuxt-better-auth/config' @@ -51,29 +61,36 @@ export default defineServerAuth(({ runtimeConfig }) => ({ })) ``` -### 5. Create Client Auth Config - ```ts [app/auth.config.ts] import { defineClientAuth } from '@onmax/nuxt-better-auth/config' export default defineClientAuth({}) ``` -### 6. Create Convex Auth Functions +### Create Convex auth functions -Export CRUD functions that the Better Auth adapter will call: +Create a `convex/auth.ts` file that exports the CRUD functions the adapter calls. ```ts [convex/auth.ts] import { createApi } from '@convex-dev/better-auth' import schema from './schema' -export const { create, findOne, findMany, updateOne, updateMany, deleteOne, deleteMany } - = createApi(schema, () => ({})) +export const { + create, + findOne, + findMany, + updateOne, + updateMany, + deleteOne, + deleteMany, +} = createApi(schema, () => ({})) ``` -### 7. Add Auth Tables to Schema +### Add auth tables to your Convex schema + +Add the Better Auth tables to `convex/schema.ts`. -Add Better Auth tables to your Convex schema: +::collapsible{title="Example schema (Better Auth tables)"} ```ts [convex/schema.ts] import { defineSchema, defineTable } from 'convex/server' @@ -138,15 +155,19 @@ export default defineSchema({ }) ``` -### 8. Deploy Convex +:: + +### Deploy Convex ```bash npx convex deploy ``` +:: + ## Usage -### Client-Side +### Client-side ```vue