Caution
Lucia-auth is deprecated, and turns into the learning resource. If you are looking for comprehensive authentication framework for TypeScript, I recommend Better-Auth and I recommend to use it with surreal-better-auth adapter that allow you to use Better-Auth with SurrealDB! BTW. Grab your free SurrealDB Instance with something extra from ✨THAT LINK✨ . This package (surreal-lucia) is not maintained anymore, and this repo will be archived soon.
This adapter seamlessly integrates SurrealDB with Lucia, providing a robust and easy-to-use authentication solution for modern applications.
⭐ Found this project helpful? Show some love with a star and consider to be a SPONSOR! Your support keeps the code evolving. 🚀
✨ Grab FREE SurrealDB Cloud instance 🚀🚀🚀
Note
Package installation examples use bun as the package manager, but you can replace bun with npm, yarn, pnpm, or deno.
- SurrealDB
^2.0.0-alpha.4
- SurrealDB Javascript SDK
^1.0.0-beta.12
bunx jsr add @surrealdb/surrealdb@^1.0.0-beta.12
- Lucia
~3.2.0
bun add lucia
- Typescript
^5.5.2
bun add typescript
Note
Depending on your package manager, you can replace bunx with npx, yarn dlx, pnpm dlx, or use deno add.
bunx jsr add @oskargmerek/surreal-lucia
Important
This example shows how to implement a SurrealDB adapter for Lucia. It is not an example of the full authentication, nor authorization setup. You should be familiar with the Lucia documentation, which contains a framework-specific guides. Read the Lucia Documentation for more information.
import { Lucia } from "lucia";
import { SurrealDBLuciaAdapter } from "@oskargmerek/surreal-lucia";
// initialize SurrealDB
const db = new Surreal();
// initialize adapter
const adapter = new SurrealDBLuciaAdapter(db, {
sessionTableName: 'sessions',
userTableName: 'users',
});
// initialize Lucia with SurrealDB adapter
export const lucia = new Lucia(adapter, {
sessionCookie: {
attributes: {
// set to `true` when using HTTPS
secure: process.env.NODE_ENV === "production"
}
}
});
// IMPORTANT!
declare module "lucia" {
interface Register {
Lucia: typeof lucia;
DatabaseUserAttributes: {
username: string; // example of an additional optional attribute
},
DatabaseSessionAttributes: {
device: string // example of an additional optional attribute
}
}
}
This adapter is distributed under the MIT License
. Please refer to the LICENSE
file for more information.