Skip to content
Migrating from NextAuth.js v4? Read our migration guide.

Fauna Adapter

리소스

설정

설치

npm install @auth/fauna-adapter fauna

환경 변수

AUTH_FAUNA_CLIENT=http://localhost:8443
AUTH_FAUNA_SECRET=abc123

설정

./auth.ts
import NextAuth from "next-auth"
import { Client } from "fauna"
import { FaunaAdapter } from "@auth/fauna-adapter"
 
const client = new Client({
  secret: process.env.AUTH_FAUNA_SECRET,
  endpoint: new URL(process.env.AUTH_FAUNA_CLIENT)
})
 
export { handlers, auth, signIn, signOut } = NextAuth({
  providers: [],
  adapter: FaunaAdapter(client)
})

v2로 마이그레이션하기

@auth/adapter-fauna@2.0.0에서는 Fauna의 모범 사례에 따라 컬렉션 이름을 대문자로 변경했습니다. v1에서 마이그레이션하는 경우, 새로운 네이밍 규칙에 맞게 컬렉션 이름을 변경해야 합니다. 또한, 인덱스 이름도 새로운 메서드 형식의 이름으로 변경했습니다 (예: account_by_user_idAccount.byUserId). Fauna 스키마 마이그레이션에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

스키마

Fauna 대시보드의 Shell 탭 안에서 다음 명령어를 실행하여 적절한 컬렉션과 인덱스를 설정하세요.

authjs-fauna-adapter-schema.fql
Collection.create({
  name: "Account",
  indexes: {
    byUserId: {
      terms: [
        { field: "userId" }
      ]
    },
    byProviderAndProviderAccountId: {
      terms [
        { field: "provider" },
        { field: "providerAccountId" }
      ]
    },
  }
})
Collection.create({
  name: "Session",
  constraints: [
    {
      unique: ["sessionToken"],
      status: "active",
    }
  ],
  indexes: {
    bySessionToken: {
      terms: [
        { field: "sessionToken" }
      ]
    },
    byUserId: {
      terms [
        { field: "userId" }
      ]
    },
  }
})
Collection.create({
  name: "User",
  constraints: [
    {
      unique: ["email"],
      status: "active",
    }
  ],
  indexes: {
    byEmail: {
      terms [
        { field: "email" }
      ]
    },
  }
})
Collection.create({
  name: "VerificationToken",
  indexes: {
    byIdentifierAndToken: {
      terms [
        { field: "identifier" },
        { field: "token" }
      ]
    },
  }
})

커스텀 컬렉션 이름

커스텀 컬렉션 이름을 사용하려면, 다음과 같이 어댑터에 옵션으로 전달할 수 있습니다.

FaunaAdapter(client, {
  collectionNames: {
    user: "CustomUser",
    account: "CustomAccount",
    session: "CustomSession",
    verificationToken: "CustomVerificationToken",
  },
})

프로바이더에 전달하는 컬렉션 이름이 Fauna 데이터베이스의 컬렉션 이름과 일치하는지 확인하세요.

Auth.js © Balázs Orbán and Team - 2025