Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
6.7 kB
3
Indexable

"use strict";
const RoomFunction = require("../class/classFunction");
const express = require('express');
const multer = require('multer')
const maxSize = 10 * 1024 * 1024; // 10 MB en octets
const upload = multer({ dest: 'public/uploads/' })
const routes = express.Router();
const fs = require('fs');
const Imageutil = require("../util/imageUtil");
const environment = process.env.MODE;
const serverOptions = require('../config.json')[environment];
const urlFilePathServer = 'https://' + serverOptions.hostName + ':' + serverOptions.listenPort
//const Player = require('../modules/player/playerBuilder')

const jwt = require('jsonwebtoken');
const secretKey = 'your_secret_key';

const { RateLimiterMemory } = require('rate-limiter-flexible');
const { TIMEOUT } = require("dns");
const imageUtil = require("../util/imageUtil");
const rateLimiterMessages = new RateLimiterMemory(
    {
        points: 5, // 5 points
        duration: 1, // per second
    });

module.exports = function async(Db, DbAdmin, Room, io) {
    const verifyToken = (req, res, next) => {
        const authHeader = req.headers.authorization;

        if (authHeader) {
            const token = authHeader.split(' ')[1]; 
            jwt.verify(token, secretKey, (err, decoded) => {
                if (err) {
                  
                    res.sendStatus(403); 
                } else {
                    req.user = decoded;
                    next();
                }
            });
        } else {
            res.sendStatus(401);
        }
    };

    routes.post('/updateRole', verifyToken, async (req, res) => {
        try {
            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_user_role')
            if (checkPermit.modify_user_role != 0) {
                const data = await DbAdmin.updateRole(req.body);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }
        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de la mise à jour de role.');
        }
    });

    routes.post('/updateUser', verifyToken, async (req, res) => {
        try {
            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_user_list')
            console.log(checkPermit.modify_user_list)
            if (checkPermit.modify_user_list != 0) {
                const data = await DbAdmin.updateUser(req.body);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }
        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de la mise à jour de role.');
        }
    });

    routes.post('/updateRoom', verifyToken, async (req, res) => {
        try {

            if (req.body.data.upload) {
                req.body.data.logo = req.body.data.upload[0].uid
            }

            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_room_list')
            if (checkPermit.modify_room_list != 0) {
                const data = await DbAdmin.updateRoom(req.body);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }

        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de la mise à jour de role.');
        }
    });

    routes.post('/adminAddUserApi', verifyToken, async (req, res) => {
        try {
            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_user_list')
            if (checkPermit.modify_user_list != 0) {
                const data = await DbAdmin.AddUser(req.body);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }

        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de l"ajout de l"utilisateur.');
        }
    });

    routes.post('/adminAddRoleApi', verifyToken, async (req, res) => {
        try {
            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_role_list')
            if (checkPermit.modify_role_list != 0) {
                const data = await DbAdmin.Addrole(req.body);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }

        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de l"ajout du role.');
        }
    });

    routes.post('/adminAddRoomApi', verifyToken, upload.single('upload'), async (req, res) => {
        try {
            let imageName = 'test'
            if (req.file) {
                if (req.file.size > maxSize) {
                    return res.send('Le fichier dépasse la taille maximale autorisée.');
                }
            }
            const userRole = req.user.role;
            const checkPermit = await DbAdmin.checkPermit(userRole, 'modify_room_list')
            if (checkPermit.modify_room_list != 0) {
                const ext = imageUtil.CheckImageExtension(req.file.mimetype)
                fs.rename(req.file.path, `public/uploads/${req.file.fieldname}.${ext}`, async () => {
                    console.log('File Renamed!');
                })
                const data = await DbAdmin.AddRoom(req.body, imageName);
                if (data) {
                    res.send(data.message);
                }
            }
            else {
                res.send('Vous ne possédez pas les droits pour cette action.');
            }
        } catch (err) {
            console.log(err);
            res.status(500).send('Une erreur est survenue lors de l"ajout de l"utilisateur.');
        }
    });

    return routes;
}