Fauna Adapter
리소스
설정
설치
npm install @auth/fauna-adapter fauna
환경 변수
AUTH_FAUNA_CLIENT=http://localhost: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 데이터베이스의 컬렉션 이름과 일치하는지 확인하세요.