💭
Auth.jsのsessionにパラメータを追加する
Auth.jsでログインした際にsessionで扱える値は、
デフォルトでは"email","name","image"の3つだけのようです。
ここに、追加で好きな値をカスタムするのに苦戦したのでやり方をメモします。
STEP.1型の拡張
appディテクトリの直下に"types"ディテクトリを作り
そこに"next-auth.d.ts"ファイルを作ります。
このファイルを以下のように編集する。
next-auth.d.ts:
import NextAuth from 'next-auth'
import { JWT } from 'next-auth/jwt'
declare module 'next-auth' {
interface User {
user_id: number
}
}
declare module 'next-auth/jwt' {
interface JWT {
user_id: number
}
}
auth.tsを下記のように編集
export const { handlers, signIn, signOut, auth } = NextAuth({
providers: [
Credentials({
credentials: {
email: {},
password: {},
},
authorize: async (credentials) => {
// 省略
},
}),
],
//セッションで使えるユーザーのパラメーターを追加するカスタマイズ
//next-auth.d.tsで追加のパラメーターの型を定義している
callbacks: {
async jwt({ token, user }) {
// userが存在する場合、保存するJWTにcompanyIdを追加する
if (user) {
token.user_id = user.user_id
}
return token
},
async session({ session, token }) {
session.user.user_id = token.user_id
return session
},
},
})
これでパラメータを追加できるようになります。
Discussion