コンテンツにスキップ
NextAuth.js v4 からの移行ですか?以下をお読みください 移行ガイド.

MikroORM アダプター

リソース

セットアップ

インストール

npm install @mikro-orm/core @auth/mikro-orm-adapter

環境変数

DATABASE_CONNECTION_STRING=./db.sqlite

構成

./auth.ts
import NextAuth from "next-auth"
import { MikroOrmAdapter } from "@auth/mikro-orm-adapter"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: MikroOrmAdapter({
    // MikroORM options object - https://mikro-orm.io/docs/next/configuration#driver
    dbName: process.env.DATABASE_CONNECTION_STRING,
    type: "sqlite",
    debug: true,
  }),
  providers: [],
})

高度な使い方

カスタムエンティティの受け渡し

MikroORM アダプターには、独自のエンティティセットが付属しています。それらを拡張したい場合は、オプションでアダプターに渡すことができます。

このスキーマは、MikroORM での使用に適応されており、メインのスキーマに基づいています。

./auth.ts
import config from "config/mikro-orm.ts"
import {
  Cascade,
  Collection,
  Entity,
  OneToMany,
  PrimaryKey,
  Property,
  Unique,
} from "@mikro-orm/core"
import { defaultEntities } from "@auth/mikro-orm-adapter"
 
const type { Account, Session } = defaultEntities
 
@Entity()
export class User implements defaultEntities.User {
  @PrimaryKey()
  id: string = randomUUID()
 
  @Property({ nullable: true })
  name?: string
 
  @Property({ nullable: true })
  @Unique()
  email?: string
 
  @Property({ type: "Date", nullable: true })
  emailVerified: Date | null = null
 
  @Property({ nullable: true })
  image?: string
 
  @OneToMany({
    entity: () => Session,
    mappedBy: (session) => session.user,
    hidden: true,
    orphanRemoval: true,
    cascade: [Cascade.ALL],
  })
  sessions = new Collection<Session>(this)
 
  @OneToMany({
    entity: () => Account,
    mappedBy: (account) => account.user,
    hidden: true,
    orphanRemoval: true,
    cascade: [Cascade.ALL],
  })
  accounts = new Collection<Account>(this)
 
  @Enum({ hidden: true })
  role = "ADMIN"
}
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  adapter: MikroOrmAdapter(config, { entities: { User } }),
})

デフォルトエンティティの組み込み

移行などで含めるために、MikroORM 設定に defaultEntities を含める必要がある場合があります。

それを実現するには、「entities」配列にそれらを含めます。

config/mikro-orm.ts
import { Options } from "@mikro-orm/core"
import { defaultEntities } from "@auth/mikro-orm-adapter"
 
const config: Options = {
  entities: [VeryImportantEntity, ...Object.values(defaultEntities)],
}
 
export default config
Auth.js © Balázs Orbán およびチーム -2024