コンテンツにスキップ
NextAuth.js v4 からの移行ですか?以下をお読みください 移行ガイド.

Fauna アダプター

リソース

セットアップ

インストール

npm install @auth/fauna-adapter fauna

環境変数

AUTH_FAUNA_CLIENT=https://#: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_idからAccount.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 -2024