Skip to content
Snippets Groups Projects
userController.js 5.37 KiB
Newer Older
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) {
Bastien's avatar
Bastien committed
        res.status(500).json({ error : error.toString()});
Bastien's avatar
Bastien committed
    }
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) {
Bastien's avatar
Bastien committed
        res.status(500).json({ error : error.toString()});
Bastien's avatar
Bastien committed
    }
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) {
Bastien's avatar
Bastien committed
        res.status(500).json({ error : error.toString()});
Bastien's avatar
Bastien committed
    }
Bastien's avatar
Bastien committed

Bastien's avatar
Bastien committed
exports.getUserSeenMovies= async (req, res, next) => {
    let username = req.session.username;

    try {
        let result = await userServices.getUserSeenMovies(username);
        res.status(200).json(result);
    } catch (error) {
        res.status(500).json({ error : error.toString()});
    }
};

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);
Bastien's avatar
Bastien committed
//         res.status(500).json({ error : error.toString()});
Bastien's avatar
Bastien committed
//     }
// };

// // 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;
// }