跳至內容
正在從 NextAuth.js v4 遷移?請閱讀 我們的遷移指南.

Fauna 轉接器

資源

設定

安裝

npm install @auth/fauna-adapter fauna

環境變數

AUTH_FAUNA_CLIENT=https://127.0.0.1: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 和團隊 -2024