コンテンツへスキップ
NextAuth.js v4からの移行?こちらをご覧ください。 移行ガイド.

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,
      }),
    },
  }),
})
Auth.js © Balázs Orbán and Team -2024