NextJSNetflix/pages/api/auth/[...nextauth].ts

65 lines
2.1 KiB
TypeScript

import NextAuth from "next-auth/next";
import Credentials from "next-auth/providers/credentials";
import GithubProvider from "next-auth/providers/github";
import GoogleProvider from "next-auth/providers/google";
import { PrismaAdapter } from "@next-auth/prisma-adapter";
import prismadb from "@/lib/prismadb";
import { compare } from "bcrypt";
export default NextAuth({
providers: [
GithubProvider({
clientId: process.env.GITHUB_ID || '',
clientSecret: process.env.GITHUB_SECRET || '',
}),
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID || '',
clientSecret: process.env.GOOGLE_CLIENT_SECRET || '',
}),
Credentials({
id: 'credentials',
name: 'Credentials',
credentials: {
email: {
label: 'Email',
type: 'text'
},
password: {
label: 'Password',
type: 'password'
}
},
async authorize(credentials) {
if (!credentials?.email || !credentials?.password){
throw new Error('Password ed email richiesti!')
}
const user = await prismadb.user.findUnique({
where:{
email: credentials.email
}
});
if (!user || !user.hashedPassword){
throw new Error('Email non esistente!')
}
const isCorrectPassword = await compare(credentials.password,user.hashedPassword)
if (!isCorrectPassword){
throw new Error('Password Sbagliata')
}
return user;
}
})
],
pages: {
signIn: '/auth',
},
debug: process.env.NODE_ENV === "development",
adapter: PrismaAdapter(prismadb),
session: {
strategy: 'jwt'
},
jwt: {
secret: process.env.NEXTAUTH_JWT_SECRET
},
secret: process.env.NEXTAUTH_SECRET
})