managerr/backend/controllers/authController.js
2025-07-21 16:38:07 +02:00

111 lines
2.6 KiB
JavaScript

const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const User = require('../models/User');
// Inscription d'un nouvel utilisateur
exports.register = async (req, res) => {
try {
const { username, email, password } = req.body;
// Vérifier si l'utilisateur existe déjà
let user = await User.findOne({ email });
if (user) {
return res.status(400).json({ message: 'Cet utilisateur existe déjà' });
}
// Créer un nouvel utilisateur
user = new User({
username,
email,
password
});
// Hashage du mot de passe
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(password, salt);
// Sauvegarder l'utilisateur dans la base de données
await user.save();
// Générer un token JWT
const payload = {
user: {
id: user.id
}
};
jwt.sign(
payload,
process.env.JWT_SECRET || 'secret',
{ expiresIn: '24h' },
(err, token) => {
if (err) throw err;
res.json({ token });
}
);
} catch (err) {
console.error(err.message);
res.status(500).send('Erreur serveur');
}
};
// Connexion d'un utilisateur
exports.login = async (req, res) => {
try {
const { email, password } = req.body;
// Vérifier si l'utilisateur existe
const user = await User.findOne({ email });
if (!user) {
return res.status(400).json({ message: 'Identifiants invalides' });
}
// Vérifier le mot de passe
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
return res.status(400).json({ message: 'Identifiants invalides' });
}
// Générer un token JWT
const payload = {
user: {
id: user.id
}
};
jwt.sign(
payload,
process.env.JWT_SECRET || 'secret',
{ expiresIn: '24h' },
(err, token) => {
if (err) throw err;
res.json({ token });
}
);
} catch (err) {
console.error(err.message);
res.status(500).send('Erreur serveur');
}
};
// Récupérer les informations de l'utilisateur connecté
exports.getMe = async (req, res) => {
try {
const user = await User.findById(req.user.id).select('-password');
res.json(user);
} catch (err) {
console.error(err.message);
res.status(500).send('Erreur serveur');
}
};
// Vérifier si des utilisateurs existent dans la base de données
exports.checkUsersExist = async (req, res) => {
try {
const count = await User.countDocuments();
res.json({ usersExist: count > 0 });
} catch (err) {
console.error(err.message);
res.status(500).send('Erreur serveur');
}
};