const bcrypt = require('bcryptjs'); const db = require('../models/db'); const crypto = require('node:crypto'); exports.signup = (req, res, next) => { let username = req.body.username; let lastname = req.body.lastname; let firstname = req.body.firstname; let birthdate = req.body.birthdate; let password = req.body.password; const hash = bcrypt.hash(password, 10); hash.then( hash => { //enregistrer les infos de l'utilisateur et le hash du mdp en base de données db.query('INSERT INTO Utilisateur VALUES(?,?,?,?,?)', [username, lastname, firstname, birthdate, hash], function (error, results, fields) { if (error == null) { res.status(201).json({ message: 'Utilisateur ajouté' }); } else { res.status(500).json({ error }); } }) } ) .catch(error => res.status(500).json({ error })) }; exports.login = (req, res, next) => { let username = req.body.username; let password = req.body.password; db.query('SELECT COUNT(*) c, mot_de_passe FROM Utilisateur WHERE nom_utilisateur=?', [username], function (error, results, fields) { if (error == null) { if (results[0].c == 1) { bcrypt.compare(password, results[0].mot_de_passe).then( valid => { if (!valid) { return res.status(401).json({ message: 'Identifiant ou mot de passe incorrect' }); // Le mot de passe donné ne corresponds pas à celui dans la bdd } else { let sessionId = crypto.randomUUID(); db.query('INSERT INTO Session VALUES (?,?)', [sessionId, username]); res.cookie('sessionId', sessionId); res.status(200).json({ message: 'Connecté !' }); } } ) .catch(error => { res.status(500).json({ error }) }); } else { //pas d'utilisateur trouvé avec ce username res.status(401).json({ message: 'Identifiant ou mot de passe incorrect BV' }); } } else { res.status(500).json({ error }); } }); };