Skip to content
Snippets Groups Projects
Select Git revision
  • 365bb1073bcf12c65b8c8c79f6d1b0d6b5111b83
  • master default
2 results

sortedline

Blame
  • administrateur.controller.js 4.58 KiB
    const mysql = require('mysql');
    const fetch = require('node-fetch');
    var secrets = require('../secrets.js');
    var dbhost = secrets.dbhost;
    var dbuser = secrets.dbuser;
    var dbpassword = secrets.dbpassword;
    var dbdatabase = secrets.dbdatabase;
    
    const dbConfig = {
      host: dbhost,
      user: dbuser,
      password: dbpassword,
      database: dbdatabase
    };
    
    function getAdministrateurs(req, res) {
      var con = mysql.createConnection(dbConfig);
      var query = "SELECT id,login FROM Admin WHERE deleted = 0 ORDER BY login ASC;"
      con.connect();
      con.query(query, (err, result) => {
        if (err) {
          console.log(err)
          return res.send({ success: false })
        }
        return res.send(result)
      });
      con.end();
    }
    
    function addNewAdministrateur(req, res) {
      var con = mysql.createConnection(dbConfig);
      var query = "INSERT INTO `Admin` (`login`) VALUES (?);";
      var inserts = [req.body.login];
      con.connect();
      con.query(query, inserts, (err, result) => {
        if (err) {
          console.log(err)
          return res.send({ success: false })
        }
        return res.send(result)
      });
      con.end();
    }
    
    function updateAdministrateur(req, res) {
      var con = mysql.createConnection(dbConfig);
      var query = "UPDATE Admin SET login = ? WHERE id=?;"
      var inserts = [req.body.login, req.body.id];
      con.connect();
      con.query(query, inserts, (err, result) => {
        if (err) {
          console.log(err)
          return res.send({ success: false })
        }
        return res.send(result)
      });
      con.end();
    }
    
    function deleteAdministrateur(req, res) {
      var con = mysql.createConnection(dbConfig);
      var query = "UPDATE Admin SET deleted = 1 WHERE id=?;"
      var inserts = [req.body.id];
      con.connect();
      con.query(query, inserts, (err, result) => {
        if (err) {
          console.log(err)
          return res.send({ success: false })
        }
        return res.send(result)
      });
      con.end();
    }
    
    function getAdminsLogins(req, res) {
      var con = mysql.createConnection(dbConfig);
      var query = "SELECT login FROM Admin WHERE deleted = 0;"
      con.connect();
      con.query(query, (err, result) => {
        if (err) {
          console.log(err)
          return res.send({ success: false })
        }
        var data = result.map((item) => { return item.login });
        return res.send(data)
      });
      con.end();
    }
    
    async function getUsers(req, res) {
      if (!req.session || !req.session.ids || !req.query.userString || req.query.userString.length < 3) {
        res.json([]);
      } else {
        let result;
        const request = `query{searchUsers(name:"${req.query.userString}",limit:10){user{firstName,lastName,login}}}`;
        const query = `https://api.linkcs.fr/v1/graphql/?query=${encodeURIComponent(request)}`;
        console.log(query)
        await fetch(query, {
          method: 'GET',
          headers: {
            'Authorization': `Bearer ${req.session.ids.token.access_token}`
          }
        }).then(async (resp) => {
          if (resp.status != 200) {
            res.status(500);
            res.json({ error: "Didn't work" });
          } else {
            result = await resp.json();
          }
        }).catch(err => {
          res.status(500);
          res.send(err)
        })
        if (result) {
          console.log(result)
          return res.json(result.data.searchUsers.map(el => el.user))
        } else {
          res.status(500);
          res.json({ error: "Didn't work" });
        }
    
      }
    }
    
    async function getUsersPerformance(req, res) {
      if (!req.session || !req.session.ids || !req.query.userString) {
        res.json([]);
      } else {
        let result;
        const request = `query{searchUsers(name:"${req.query.userString}",limit:10){user{firstName,lastName,login}}}`;
        const query = `https://api.linkcs.fr/v1/graphql/?query=${encodeURIComponent(request)}`;
        console.log(query)
        await fetch(query, {
          method: 'GET',
          headers: {
            'Authorization': `Bearer ${req.session.ids.token.access_token}`
          }
        }).then(async (resp) => {
          if (resp.status != 200) {
            res.status(500);
            res.json({ error: "Didn't work" });
          } else {
            result = await resp.json();
          }
        }).catch(err => {
          res.status(500);
          res.send(err)
        })
        if (result) {
          console.log(result)
          return res.json(result.data.searchUsers.map(el => el.user))
        } else {
          res.status(500);
          res.json({ error: "Didn't work" });
        }
    
      }
    }
    
    function isAdminMiddleware(req, res, next) {
      console.log(req.session.ids);
      const login = req.session.ids.user.login || '';
      const admins = getAdminsLogins();
      if (admins.includes(login)) {
        return next();
      }
      res.status(403).send('You have no right to request this url');
    }
    
    module.exports = { getAdministrateurs, addNewAdministrateur, updateAdministrateur, deleteAdministrateur, getAdminsLogins, getUsers, isAdminMiddleware }