From c9018feeeb740ed55bd9472d45992ce65537ff60 Mon Sep 17 00:00:00 2001 From: Raphix Date: Thu, 31 Aug 2023 22:52:56 +0200 Subject: [PATCH] Version 0.7.2 - Ajout des utilisateurs --- data/users.json | 4 +- package.json | 2 +- src/modules/sub-auth.js | 71 +++++++++++++++- src/modules/sub-web.js | 82 ++++++++++++++++++- .../public/javascript/__settings_script.js | 67 +++++++++++++-- src/web/public/stylesheets/style.css | 23 +++++- 6 files changed, 236 insertions(+), 13 deletions(-) diff --git a/data/users.json b/data/users.json index 36980e9..9fb891f 100644 --- a/data/users.json +++ b/data/users.json @@ -5,7 +5,7 @@ "access_token": "jY17lCWaOpTdPQCnz50kfNm7ABpsGz", "expires_in": 604800, "refresh_token": "3TronknZ7j5kVSDBjI3OechmCYF8ck", - "scope": "guilds.members.read guilds identify" + "scope": "identify guilds guilds.members.read" }, "avatar": null, "communication_disabled_until": null, @@ -34,7 +34,7 @@ "deaf": false, "bio": "", "banner": null, - "token": "80009f8e-6caf-4db5-8454-c50471ac3b55", + "token": "0c121c2f-a9cd-444b-952f-1eb23e463cc0", "admin": true } ] \ No newline at end of file diff --git a/package.json b/package.json index 360ab29..d7977ce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "subsonics-web", "author": "Raphix", - "version": "0.7.1", + "version": "0.7.2", "nodemonConfig": { "ext": "js, html", "ignore": [ diff --git a/src/modules/sub-auth.js b/src/modules/sub-auth.js index 5b4ac09..9c84ee3 100644 --- a/src/modules/sub-auth.js +++ b/src/modules/sub-auth.js @@ -141,6 +141,14 @@ module.exports.removeSession = function (session) { } +module.exports.getUsers = function () { + + const userDB = JSON.parse(fs.readFileSync(__glob.USERS)) + return userDB + +} + + module.exports.getUser = function (token) { return users.get(token) } @@ -156,7 +164,29 @@ module.exports.addUser = function (user) { const userDB = JSON.parse(fs.readFileSync(__glob.USERS)) - userDB.push(user) + + + var selectedUser = null + + for(var userI of userDB) { + + if(user.user.id == userI.user.id) { + + selectedUser = userDB.indexOf(userI) + } + + } + + + + if(selectedUser != null) { + + userDB[selectedUser].token = user.token + + } else { + + userDB.push(user) + } fs.writeFileSync(__glob.USERS, JSON.stringify(userDB, null, 2)) updateUsers() @@ -164,6 +194,45 @@ module.exports.addUser = function (user) { } +module.exports.setAdmin = function (user) { + + if(!fs.existsSync(__glob.USERS)){ + + fs.writeFileSync(__glob.USERS, '[]') + } + + const userDB = JSON.parse(fs.readFileSync(__glob.USERS)) + + var selectedUser = null + + for(var userI of userDB) { + + if(user.user.id == userI.user.id) { + + selectedUser = userDB.indexOf(userI) + } + + } + + if(!userDB[selectedUser].admin) { + + userDB[selectedUser].admin = true + console.log("[Personnal Quote] - New Admin") + + } else { + + userDB[selectedUser].admin = false + console.log("[Personnal Quote] - Remove Admin") + } + + + fs.writeFileSync(__glob.USERS, JSON.stringify(userDB, null, 2)) + + updateUsers() + alog.log("Ajout de " + user.user.username + " en tant qu'administrateur avec le token : " + user.token) + +} + module.exports.removeUser = function (token) { diff --git a/src/modules/sub-web.js b/src/modules/sub-web.js index 25d3ea6..f8e6e05 100644 --- a/src/modules/sub-web.js +++ b/src/modules/sub-web.js @@ -240,6 +240,26 @@ function IOConnection(io) { }) + GetRequest(io, socket, "USERS", () => { + var cookies = socket.handshake.headers.cookie + cookies = cook.parse(cookies) + var token = cookies.token + + const user = auth.getUser(token) + + + if(user.admin == true) { + + const users_data = auth.getUsers() + + socket.emit("ANSWER/GET/USERS", users_data) + + } + + + + }) + @@ -318,6 +338,66 @@ function IOConnection(io) { // SEND REQUEST + socket.on("SEND/USERS/ADMIN", (data) => { + + + var cookies = socket.handshake.headers.cookie + + if(cookies) { + + cookies = cook.parse(cookies) + var token = cookies.token + + const user = auth.getUser(token) + + + if(user.admin == true) { + + auth.setAdmin(data) + + socket.emit("ANSWER/GET/USERS/ADMIN", "OK") + + } + + } else { + io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"}) + + } + + + + }) + + socket.on("SEND/USERS/DELETE", (data) => { + + + var cookies = socket.handshake.headers.cookie + + if(cookies) { + + cookies = cook.parse(cookies) + var token = cookies.token + + const user = auth.getUser(token) + + + if(user.admin == true) { + + auth.removeUser(data.token) + + socket.emit("ANSWER/GET/USERS/ADMIN", "OK") + + } + + } else { + io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"}) + + } + + + + }) + socket.on("SEND/SEEK", (data) => { @@ -606,8 +686,6 @@ function IOConnection(io) { if(auth.checkUser(token)) { - - var user = auth.getUser(token) var userId = user.user.id diff --git a/src/web/public/javascript/__settings_script.js b/src/web/public/javascript/__settings_script.js index 0d24957..ae23bde 100644 --- a/src/web/public/javascript/__settings_script.js +++ b/src/web/public/javascript/__settings_script.js @@ -30,10 +30,71 @@ settingsBtn.addEventListener("click", () => { settings_users.addEventListener("click", () => { loadUsers() + }) settings_logs.style.color = "white" + function loadUsers() { + + socket.emit("GET/USERS") + socket.on("ANSWER/GET/USERS",(data) => { + + + var userToPush = new Array() + for(var user of data) { + + var admin_bar = '' + + if(user.beta == true) { + + admin_bar = "

BETA

" + } + + userToPush.push("
") + + } + + settings_content.innerHTML = userToPush.join("") + + for(var user of data) { + + + const adminBtn = document.getElementById(data.indexOf(user) + "_admin") + const deleteBtn = document.getElementById(data.indexOf(user) + "_delete") + + + if(data[data.indexOf(user)].admin == true) { + + adminBtn.style.color = "#19a7d2" + + } + + adminBtn.addEventListener("click", () => { + + send("USERS/ADMIN", data[data.indexOf(user)]) + + socket.emit("GET/USERS") + }) + + deleteBtn.addEventListener("click", () => { + + + send("USERS/DELETE", data[data.indexOf(user)]) + + socket.emit("GET/USERS") + }) + } + + + + }) + + + + + } + function loadLogs() { settings_content.innerHTML = `