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