跳至内容
从 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/[email protected] 中,我们已将集合重命名为使用大写命名模式,以符合 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 和团队 -2024