/surreal-lucia

This adapter seamlessly integrates SurrealDB with Lucia, providing a robust and easy-to-use authentication solution for modern applications.

Primary LanguageTypeScriptMIT LicenseMIT

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.

SurrealDB Adapter for Lucia

This adapter seamlessly integrates SurrealDB with Lucia, providing a robust and easy-to-use authentication solution for modern applications.

Feedback

⭐ Found this project helpful? Show some love with a star and consider to be a SPONSOR! Your support keeps the code evolving. 🚀

Free Database

✨ Grab FREE SurrealDB Cloud instance 🚀🚀🚀

Modern Technology

SurrealDB

Lucia auth

Requirements

Note

Package installation examples use bun as the package manager, but you can replace bun with npm, yarn, pnpm, or deno.

Installation

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

Setup Example

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
    }
  }
}

Documentation

License

This adapter is distributed under the MIT License. Please refer to the LICENSE file for more information.