Nitro Integration
Better Auth can be integrated with your Nitro Application(an open source framework to build web servers).
This guide aims to help you integrate Better Auth with your Nitro application in a few simple steps.
Create a new Nitro Application
Start by scaffolding a new Nitro application using the following command:
This will create the nitro-app
directory and install all the dependencies. You can now open the nitro-app
directory in your code editor.
Prisma Adapter Setup
This guide assumes that you have a basic understanding of Prisma. If you are new to Prisma, you can check out the Prisma documentation.
The sqlite
database used in this guide will not work in a production environment. You should replace it with a production-ready database like PostgreSQL
.
For this guide, we will be using the Prisma adapter. You can install prisma client by running the following command:
prisma
can be installed as a dev dependency using the following command:
Generate a schema.prisma
file in the prisma
directory by running the following command:
You can now replace the contents of the schema.prisma
file with the following:
Ensure that you update the DATABASE_URL
in your .env
file to point to the location of your database.
Run the following command to generate the Prisma client & sync the database:
Install & Configure Better Auth
Follow steps 1 & 2 from the installation guide to install Better Auth in your Nitro application & set up the environment variables.
Once that is done, create your better auth instance within the server/utils/auth.ts
file.
Update Prisma Schema
Use the Better Auth CLI to update your Prisma schema with the required models by running the following command:
The --config
flag is used to specify the path to the file where you have created your Better Auth instance.
Head over to the prisma/schema.prisma
file & save the file to trigger the format on save.
After saving the file, you can run the npx prisma db push
command to update the database schema.
Mount The Handler
You can now mount the Better Auth handler in your Nitro application. You can do this by adding the following code to your server/routes/api/auth/[...all].ts
file:
This is a catch-all route that will handle all requests to /api/auth/*
.
Cors
You can configure CORS for your Nitro app by creating a plugin.
Start by installing the cors package:
You can now create a new file server/plugins/cors.ts
and add the following code:
This will enable CORS for all routes. You can customize the origin
property to allow requests from specific domains. Ensure that the config is in sync with your frontend application.
Auth Guard/Middleware
You can add an auth guard to your Nitro application to protect routes that require authentication. You can do this by creating a new file server/utils/require-auth.ts
and adding the following code:
You can now use this event handler/middleware in your routes to protect them:
Example
You can find an example of a Nitro application integrated with Better Auth & Prisma here.