Initial commit - Projet Managerr
This commit is contained in:
commit
848a79a04e
36 changed files with 3850 additions and 0 deletions
100
backend/controllers/authController.js
Normal file
100
backend/controllers/authController.js
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
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');
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue