🐷

【Next.js】基礎から始めるNext.js API Routes【22[...nextauth].js】

2022/12/31に公開

【22[...nextauth].js】

YouTube: https://youtu.be/ozSxavvrJ2g

https://youtu.be/ozSxavvrJ2g

今回はこちら「[...nextauth].js」の中身を作成します。

ファイルの詳細設定はこちらが参考になります。

https://github.com/nextauthjs/next-auth-typescript-example/blob/main/pages/api/auth/[...nextauth].ts

pages/api/auth/[...nextauth].js
import NextAuth from 'next-auth'
import CredentialsProvider from 'next-auth/providers/credentials'
import { prisma } from '../../../utils/prismaClient'

export default NextAuth({
  providers: [
    CredentialsProvider({
      name: 'Credentials',
      async authorize(credentials) {
        const result = await prisma.user.findUnique({
          where: {
            email: credentials.email,
          },
        })
        if (!result) {
          return null
        }
        if (credentials.password !== result.password) {
          throw new Error('Password wrong')
        }
        return result
      },
    }),
  ],
  secret: 'secretKey',
  session: {
    strategy: 'jwt',
  },
  jwt: {
    secret: 'secretKey',
  },
  callbacks: {
    async jwt({ token, user, account, profile, isNewUser }) {
      console.log('token :', token)
      console.log('user :', user)
      console.log('account :', account)
      console.log('profile :', profile)
      console.log('isNewUser :', isNewUser)
      return token
    },
    async session({ session, token, user }) {
      console.log('session :', session)
      console.log('token :', token)
      console.log('user :', user)
      return session
    },
  },
})

Discussion