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データベースのコレクション名と一致することを確認してください。