Skip to content
Snippets Groups Projects
userController.js 2.87 KiB
Newer Older
Bastien's avatar
Bastien committed
const bcrypt = require('bcryptjs');
const db = require('../models/db');

exports.signup = (req, res, next) => {

    let { username, lastname, firstname, birthdate, password } = req.body;
Bastien's avatar
Bastien committed
    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, hash, birthdate],
Bastien's avatar
Bastien committed
                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, password } = req.body;
Bastien's avatar
Bastien committed

    db.query('SELECT COUNT(*) c, mdp FROM Utilisateur WHERE login=?', [username], function (error, results, fields) {
        
        if (!error) {
Bastien's avatar
Bastien committed
            if (results[0].c == 1) {
                bcrypt.compare(password, results[0].mdp).then(
Bastien's avatar
Bastien committed
                    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 {
                            req.session.username = username;
Bastien's avatar
Bastien committed
                            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' });
Bastien's avatar
Bastien committed
            }

        }
        else {
            res.status(500).json({ error });
        }


    });

};

exports.logout = (req,res,next) => {
    req.session.username = null;
    res.status(200).json({ message: 'Déconnecté !' });
};

Bastien's avatar
Bastien committed

exports.getUserInformations = (req,res,next) => {
    let username = req.session.username;
    //renvoyer login, nom, prenom, dateNais
Bastien's avatar
Bastien committed

    db.query('SELECT login,nom,prenom,dateNais FROM Utilisateur WHERE login = ?',
    [username],function (error,results,fields) {

        if (error) {
            res.status(500).json({error});
        } else {
            let infos = {
                username : results[0].login,
                lastname : results[0].nom,
                firstname : results[0].prenom,
                birthdate : results[0].dateNais
            };
            res.status(200).json(infos);
        }
    })
Bastien's avatar
Bastien committed
};