Select Git revision
-
Wen Yao Jin authoredWen Yao Jin authored
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 }