46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { NextResponse, NextRequest } from 'next/server'
|
|
import { createToken } from '@/lib/jwt'
|
|
import { createHmac } from "crypto"
|
|
|
|
import { db } from '@/lib/db'
|
|
import { logging } from '@/lib/logging'
|
|
|
|
const secret = process.env.PASSWORD_SECRET ? process.env.PASSWORD_SECRET : ""
|
|
|
|
export async function POST(req: NextRequest) {
|
|
try {
|
|
const { email, password } = await req.json()
|
|
|
|
const user = await db.utilisateurice.findFirst({
|
|
where: {
|
|
email
|
|
}
|
|
})
|
|
|
|
if (user !== undefined){
|
|
if(createHmac('sha256',secret).update(password).digest('hex') == user!.password) {
|
|
const token = createToken({data: {username: user!.username, admin: user!.admin, id: user!.id}, maxAge: 60*60*24*7})
|
|
logging("User " + user!.username + " has connected.")
|
|
return NextResponse.json({"JWT": token},{
|
|
status: 200,
|
|
});
|
|
} else {
|
|
return NextResponse.json({error: "Wrong credentials"},{
|
|
status: 401,
|
|
});
|
|
}
|
|
} else {
|
|
return NextResponse.json({error: "Wrong credentials"},{
|
|
status: 401,
|
|
});
|
|
}
|
|
} catch (error) {
|
|
console.log(error)
|
|
return NextResponse.json(
|
|
{ error: "Failed, check console" },
|
|
{
|
|
status: 500,
|
|
}
|
|
);
|
|
}
|
|
}
|