Convert backend to regular directory

This commit is contained in:
2026-06-04 20:16:41 +02:00
parent 9107c29304
commit be40cb4745
29 changed files with 4149 additions and 1 deletions

View File

@@ -0,0 +1,134 @@
const bcrypt = require("bcrypt");
const jwt = require("jsonwebtoken");
const prisma = require("../config/prisma");
const register = async (req, res) => {
try {
const {
firstname,
lastname,
email,
password,
birthdate,
gender,
marketingOptIn,
} = req.body;
if (!firstname || !lastname || !email || !password) {
return res.status(400).json({
message: "Tous les champs obligatoires doivent être renseignés.",
});
}
const existingUser = await prisma.user.findUnique({
where: { email },
});
if (existingUser) {
return res.status(409).json({
message: "Un compte existe déjà avec cet email.",
});
}
const hashedPassword = await bcrypt.hash(password, 10);
const user = await prisma.user.create({
data: {
firstname,
lastname,
email,
password: hashedPassword,
birthdate: birthdate ? new Date(birthdate) : null,
gender,
marketingOptIn: marketingOptIn || false,
},
select: {
id: true,
firstname: true,
lastname: true,
email: true,
role: true,
marketingOptIn: true,
createdAt: true,
},
});
return res.status(201).json({
message: "Inscription réussie.",
user,
});
} catch (error) {
console.error("Erreur register:", error);
return res.status(500).json({
message: "Erreur serveur lors de l'inscription.",
});
}
};
const login = async (req, res) => {
try {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({
message: "Email et mot de passe requis.",
});
}
const user = await prisma.user.findUnique({
where: { email },
});
if (!user) {
return res.status(401).json({
message: "Identifiants invalides.",
});
}
const isPasswordValid = await bcrypt.compare(password, user.password);
if (!isPasswordValid) {
return res.status(401).json({
message: "Identifiants invalides.",
});
}
const token = jwt.sign(
{
id: user.id,
role: user.role,
},
process.env.JWT_SECRET,
{ expiresIn: "24h" }
);
return res.json({
message: "Connexion réussie.",
token,
user: {
id: user.id,
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
role: user.role,
},
});
} catch (error) {
console.error("Erreur login:", error);
return res.status(500).json({
message: "Erreur serveur lors de la connexion.",
});
}
};
const me = async (req, res) => {
return res.json({
user: req.user,
});
};
module.exports = {
register,
login,
me,
};