Skip to content
Snippets Groups Projects
userController.js 5 KiB
Newer Older
  • Learn to ignore specific revisions
  • Bastien's avatar
    Bastien committed
    const bcrypt = require('bcryptjs');
    const db = require('../models/db');
    
    Bastien's avatar
    Bastien committed
    const userServices = require('../services/user');
    
    Bastien's avatar
    Bastien committed
    
    
    Bastien's avatar
    Bastien committed
    
    exports.signup = async (req, res, next) => {
    
    Bastien's avatar
    Bastien committed
    
    
        let { username, lastname, firstname, birthdate, password } = req.body;
    
    Bastien's avatar
    Bastien committed
    
        try {
            let result = await userServices.signup(username, lastname, firstname, birthdate, password)
            res.status(201).json({ message: 'Utilisateur ajouté' });
        } catch (error) {
            res.status(500).json({ error });
        }
    
    Bastien's avatar
    Bastien committed
    exports.login = async (req, res, next) => {
    
    Bastien's avatar
    Bastien committed
    
    
        let { username, password } = req.body;
    
    Bastien's avatar
    Bastien committed
    
    
    Bastien's avatar
    Bastien committed
        try {
            let loggedin = await userServices.login(username, password);
            if (loggedin) {
                req.session.username = username;
                res.status(200).json({ message: 'Connecté !' });
            } else {
                res.status(401).json({ message: 'Identifiant ou mot de passe incorrect' });
    
    Bastien's avatar
    Bastien committed
            }
    
    
    Bastien's avatar
    Bastien committed
        } catch (error) {
            res.status(500).json({ error });
        }
    
    Bastien's avatar
    Bastien committed
    
    
    Bastien's avatar
    Bastien committed
    exports.logout = (req, res, next) => {
    
        req.session.username = null;
        res.status(200).json({ message: 'Déconnecté !' });
    };
    
    
    Bastien's avatar
    Bastien committed
    
    
    Bastien's avatar
    Bastien committed
    exports.getUserInformations = async (req, res, next) => {
    
        let username = req.session.username;
        //renvoyer login, nom, prenom, dateNais
    
    Bastien's avatar
    Bastien committed
        try {
    
    Bastien's avatar
    Bastien committed
            let result = await userServices.getUserInformations(username);
            let infos = {
                username: result.login,
                lastname: result.nom,
                firstname: result.prenom,
                birthdate: result.dateNais
            };
            res.status(200).json(infos);
    
    Bastien's avatar
    Bastien committed
        } catch (error) {
            res.status(500).json({ error });
        }
    
    Bastien's avatar
    Bastien committed
    
    
    Bastien's avatar
    Bastien committed
    // exports.changeUserInfos = async (req, res, next) => {
    //     try {
    //         const { newUsername, newPassword } = req.params;
    //         const currentUsername = req.session.username; // Supposant que le nom d'utilisateur actuel est stocké dans la session
    
    //         console.log(req.params);
    //         console.log(req.body);
    //         console.log(newUsername);
    //         if (!newUsername && !newPassword) {
    //             return res.status(400).json({ message: 'Aucune information à mettre à jour' });
    //         }
    
    //         // Vérification si le nouvel utilisateur existe déjà
    //         if (newUsername) {
    //             const userExists = await checkUserExists(newUsername);
    //             if (userExists) {
    //                 return res.status(409).json({ message: 'Le nouvel utilisateur existe déjà' });
    //             }
    //         }
    
    //         // Mise à jour du nom d'utilisateur et/ou du mot de passe dans la base de données
    //         const updateResult = await updateUserInfo(currentUsername, newUsername, newPassword);
    
    //         // Vérification si la mise à jour a réussi
    //         if (updateResult) {
    //             req.session.username = newUsername || currentUsername; // Mettre à jour le nom d'utilisateur dans la session si applicable
    //             res.status(200).json({ message: 'Informations utilisateur mises à jour avec succès' });
    //         } else {
    //             res.status(500).json({ message: 'Échec de la mise à jour des informations utilisateur' });
    //         }
    //     } catch (error) {
    //         console.error('Erreur lors de la mise à jour des informations utilisateur :', error);
    //         res.status(500).json({ error });
    //     }
    // };
    
    // // Fonction pour vérifier si un utilisateur existe déjà dans la base de données
    // async function checkUserExists(username) {
    //     const queryResult = await new Promise((resolve, reject) => {
    //         db.query('SELECT COUNT(*) c FROM Utilisateur WHERE login=?', [username], (error, results, fields) => {
    //             if (error) {
    //                 reject(error);
    //             } else {
    //                 resolve(results[0].c > 0);
    //             }
    //         });
    //     });
    //     return queryResult;
    // }
    
    // // Fonction pour mettre à jour le nom d'utilisateur et/ou le mot de passe dans la base de données
    // async function updateUserInfo(currentUsername, newUsername, newPassword) {
    //     const updateResult = await new Promise((resolve, reject) => {
    //         let updateQuery = 'UPDATE Utilisateur SET';
    //         const updateParams = [];
    
    //         if (newUsername) {
    //             updateQuery += ' login=?,';
    //             updateParams.push(newUsername);
    //         }
    
    //         if (newPassword) {
    //             updateQuery += ' mdp=?,';
    //             const hash = bcrypt.hashSync(newPassword, 10);
    //             updateParams.push(hash);
    //         }
    
    //         // Supprimer la virgule finale de la requête
    //         updateQuery = updateQuery.replace(/,$/, '');
    
    //         // Ajouter la clause WHERE pour le nom d'utilisateur actuel
    //         updateQuery += ' WHERE login=?';
    //         updateParams.push(currentUsername);
    
    //         // Exécution de la mise à jour
    //         db.query(updateQuery, updateParams, (error, results, fields) => {
    //             if (error) {
    //                 reject(error);
    //             } else {
    //                 resolve(true);
    //             }
    //         });
    //     });
    //     return updateResult;
    // }