nitro-better-auth
v0.3.0
Published
[](https://npmjs.com/package/nitro-better-auth) []
Maintainers
Readme
nitro-better-auth
Features
- Flexable use better-auth
- Type safe
Installation
Add dependencies to your project
pnpm add nitro-better-auth better-authnpm install nitro-better-auth better-authAdd module in your nitro.config.ts
export default defineNitroConfig({
modules: ['nitro-better-auth'],
betterAuth: {
// [Optional]
},
})[!TIP] When you are using Postgresql as database with Hyperdrive in Cloudflare Worker, you should setup server singleton by request.
export default defineNitroConfig({
modules: ['nuxt-better-auth'],
// Setup server singleton by request
betterAuth: {
singleton: 'request',
},
// [Optional] Enable async context: https://nitro.build/guide/utils#async-context-experimental
experimental: {
asyncContext: true,
},
})Usage
You can easily get betterAuth instance through useBetterAuth in the eventHandler.
export default eventHandler(async () => {
const betterAuth = useBetterAuth()
// Do something with betterAuth
// e.g: call login with anonymous
const resp = await betterAuth.api.signInAnonymous()
return {
success: true,
data: resp,
}
})If use singleton for request, please put event to useBetterAuth, or used asyncContext first then you don't need that anymore.
export default eventHandler(async () => {
const betterAuth = useBetterAuth(event)
// Do something with betterAuth
// e.g: call login with anonymous
const resp = await betterAuth.api.signInAnonymous()
return {
success: true,
data: resp,
}
})Custom options
Create file at nitro's server dir (default is server/), e.g: server/better-auth/server-options.ts.
import type { BetterAuthOptions } from 'better-auth'
import { anonymous } from 'better-auth/plugins'
export default () => ({
plugins: [
anonymous(),
],
} satisfies BetterAuthOptions)Middlewares
Provide middleware for auth, you can easy use in eventHandler
export default eventHandler({
onRequest: [
AuthenticateMiddleware, // a.k.a: AuthMiddleware
],
handler: async (event) => {
// Could get auth data form event.context
const { user } = event.context.auth!
return {
data: user,
}
},
})License
Made with ❤️
Published under the MIT License.
