65 lines
2.1 KiB
TypeScript
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
|
|
}) |