fastify-xauth-better
Production-ready Better Auth integration for Fastify with multi-instance support, organizations, 2FA, and audit logging.
fastify-xauth-better
Production-ready Better Auth plugin for Fastify with multi-instance support, organizations, 2FA, audit logging, and email templates.
Installation
npm install @xenterprises/fastify-xauth-better
Quick Start
await fastify.register(xAuthBetter, {
secret: process.env.BETTER_AUTH_SECRET,
database: { url: process.env.DATABASE_URL },
trustedOrigins: ['https://app.example.com'],
features: {
organizations: true,
twoFactor: true,
emailVerification: true,
},
})
Configuration
| Option | Type | Description |
|---|---|---|
secret | string | Auth secret (min 32 chars) |
database.url | string | PostgreSQL connection string |
trustedOrigins | string[] | Allowed CORS origins |
features.organizations | boolean | Enable org management |
features.twoFactor | boolean | Enable 2FA (TOTP) |
features.emailVerification | boolean | Require email verification |
Routes
The plugin registers /api/auth/** routes automatically via Better Auth's Fastify adapter.
Decorators
// Check auth in route handler
fastify.get('/profile', {
preHandler: fastify.authenticate
}, async (request) => {
const user = request.user // typed User object
return user
})
AI Context
package: "@xenterprises/fastify-xauth-better"
type: fastify-plugin
auth-system: Better Auth (better-auth.dev)
decorates: [fastify.authenticate, request.user]
routes: /api/auth/** (auto-registered by Better Auth)
use-when: Full-featured auth with orgs, 2FA, social login
env-required: [BETTER_AUTH_SECRET, DATABASE_URL]
session: database-backed sessions
multi-instance: supports multiple auth configs (e.g., admin + user)
