Sequelizeアダプター
リソース
設定
インストール
npm install @auth/sequelize-adapter sequelize
環境変数
DATABASE_URL=postgres://postgres:adminadmin@0.0.0.0:5432/db
設定
⚠️
お使いのデータベースのドライバーも手動でインストールする必要があります。データベースドライバー
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter from "@auth/sequelize-adapter"
import { Sequelize } from "sequelize"
const sequelize = new Sequelize(process.env.DATABASE_URL)
export const { handlers, auth, signIn, signOut } = NextAuth({
providers: [],
adapter: SequelizeAdapter(sequelize),
})
スキーマ
デフォルトでは、Sequelizeアダプターはデータベースにテーブルを作成しません。本番環境では、ベストプラクティスとして、必要なテーブルをマイグレーションを介してデータベースに作成することをお勧めします。開発環境では、sequelize.sync()
を呼び出して、Sequelizeに必要なテーブル、外部キー、インデックスを作成できます。
このスキーマは、Sequelizeで使用できるように調整されており、メインのスキーマに基づいています。
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter from "@auth/sequelize-adapter"
import Sequelize from "sequelize"
const sequelize = new Sequelize("sqlite::memory:")
const adapter = SequelizeAdapter(sequelize)
// Calling sync() is not recommended in production
sequelize.sync()
export const { handlers, auth, signIn, signOut } = NextAuth({
adapter,
})
高度な使用方法
カスタムモデルの使用
Sequelizeモデルは次のようにカスタマイズできます。
./auth.ts
import NextAuth from "next-auth"
import SequelizeAdapter, { models } from "@auth/sequelize-adapter"
import Sequelize, { DataTypes } from "sequelize"
const sequelize = new Sequelize("sqlite::memory:")
export const { handlers, auth, signIn, signOut } = NextAuth({
// https://authjs.dokyumento.jp/reference/providers/
providers: [],
adapter: SequelizeAdapter(sequelize, {
models: {
User: sequelize.define("user", {
...models.User,
phoneNumber: DataTypes.STRING,
}),
},
}),
})