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_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 数据库中的集合名称匹配。