From da368013e65db2d2b779bbdfa615a81f90a15552 Mon Sep 17 00:00:00 2001 From: N0rdye Date: Thu, 21 Sep 2023 20:38:16 +0500 Subject: [PATCH] user edit update --- admin.js | 28 ++++-- back_users.sql | 2 +- db.js | 6 +- views/admin/users/user_edit.ejs | 162 +++++++++++++++++++++++++------- 4 files changed, 151 insertions(+), 47 deletions(-) diff --git a/admin.js b/admin.js index 9bdf02e..450526f 100644 --- a/admin.js +++ b/admin.js @@ -8,12 +8,15 @@ module.exports.get_users = (inp,cook,res)=>{ db.crc("users",(row_count)=>{ // console.log(row_count); db.gav("users",`${inp["from"]},${inp["load_interval"]}`,(data)=>{ - if(data["length"] > 0){ - res.send({body:data,count:row_count,out:"good"}); - } - else{ - res.send({out:"bad"}); - } + db.gav("admins",`0`,(admins)=>{ + if(data["length"] > 0){ + res.send({body:data,admins:admins,count:row_count,out:"good"}); + } + else{ + res.send({out:"bad"}); + } + },true) + },true) },true) } catch(error){ @@ -56,7 +59,13 @@ module.exports.edit_user = (inp,cook,res)=>{ // } // change(); }) - }else {change();} + }else if (inp["key"] == "rights"){ + db.sv("admins",inp["key"],inp["value"],"uid",inp["id"],(db_res)=>{ + func.log(`admin ${cook["uuid"]} changed user ${inp["login"]} ${inp["key"]} to ${inp["value"]}`); + res.send({out:"good"}); + },true,true) + } + else {change();} function change(){ db.sv("users",inp["key"],inp["value"],"id",inp["id"],(db_res)=>{ @@ -69,6 +78,7 @@ module.exports.edit_user = (inp,cook,res)=>{ } } + module.exports.del_user = (inp,cook,res)=>{ try { db.dl("users","id",`'${inp["id"]}'`,()=>{ @@ -139,7 +149,9 @@ module.exports.find_user = (inp,cook,res)=>{ try { db.fva("users","login",inp["login"],`${inp["from"]},${inp["load_interval"]}`,(data)=>{ if(data["length"] > 0){ - res.send({body:data,out:"good"}); + db.gav("admins",`0`,(admins)=>{ + res.send({body:data,admins,admins,out:"good"}); + },true) } else{ res.send({out:"bad"}); diff --git a/back_users.sql b/back_users.sql index daf2fda..1846025 100644 --- a/back_users.sql +++ b/back_users.sql @@ -18,7 +18,7 @@ SET time_zone = "+00:00"; /*!40101 SET NAMES utf8mb4 */; -- --- База данных: `users` +-- База данных: `puzzle` -- -- -------------------------------------------------------- diff --git a/db.js b/db.js index 2c778ad..b733043 100644 --- a/db.js +++ b/db.js @@ -5,15 +5,15 @@ const db_host = "localhost"; const admin = mysql.createConnection({ host: db_host, user: 'admin', - password: '484', - database: 'users' + password: 'secretpassword', + database: 'puzzle' }); const user = mysql.createConnection({ host: db_host, user: 'user', password: 'user', - database: 'users' + database: 'puzzle' }); db = (prevs = false) => { diff --git a/views/admin/users/user_edit.ejs b/views/admin/users/user_edit.ejs index 5d9aeed..e89e0ff 100644 --- a/views/admin/users/user_edit.ejs +++ b/views/admin/users/user_edit.ejs @@ -3,13 +3,18 @@ width: 80vw; margin: auto; } + .pass_blur{ + color:transparent; text-shadow:0 0 7px #555, 0 0 10px #000; + border:0; padding:0; margin:0; -webkit-filter:blur(3px); + margin-right: 20px; + } #users_section li{ display: flex; justify-content: space-between; text-align: center; margin: 0px auto; padding: 10px; - background-color:white; + /* background-color:white; */ } #users_section li div:not(#first_user div){ /* margin: auto; */ @@ -43,9 +48,9 @@
-
-
  • Логин
    Превилегии
    Функции
  • -
      +
      +
    • Логин
      Пароль
      Админ. права
      Амин. польз
      Админ. объект.
      Удалить
    • +

        Всего: 

        0

        @@ -94,14 +99,7 @@ if(res["out"] == "good"){ document.getElementById("users_count").innerText = res["count"]; res["body"].forEach(user => { - let user_sec = document.createElement("li");user_sec.id = `user_${user["id"]}`; - let user_name = document.createElement("div");user_name.id = `login_${user["id"]}`;user_name.innerText = user["login"]; - let user_pass = document.createElement("div");user_pass.id = `pass_${user["id"]}`;user_pass.innerText = user["pass"];user_pass.style.display = "none"; - let user_prevs = document.createElement("div");user_prevs.id = `admin_${user["id"]}`;user_prevs.innerText = Boolean(user["admin"]); - let user_buttons = document.createElement("button");user_buttons.id = "user_buttons"; user_buttons.innerText = "изменить"; user_buttons.classList.add(user["id"]); user_buttons.classList.add("menu_btn"); - - user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons); - document.getElementById("user_list").append(user_sec); + make_user(user,res); user_count_check(); }); } @@ -118,14 +116,7 @@ .done(function( res ) { if(res["out"] == "good"){ res["body"].forEach(user => { - let user_sec = document.createElement("li");user_sec.id = `user_${user["id"]}`; - let user_name = document.createElement("div");user_name.id = `login_${user["id"]}`;user_name.innerText = user["login"]; - let user_pass = document.createElement("div");user_pass.id = `pass_${user["id"]}`;user_pass.innerText = user["pass"];user_pass.style.display = "none"; - let user_prevs = document.createElement("div");user_prevs.id = `admin_${user["id"]}`;user_prevs.innerText = Boolean(user["admin"]); - let user_buttons = document.createElement("button");user_buttons.id = "user_buttons"; user_buttons.innerText = "изменить"; user_buttons.classList.add(user["id"]); user_buttons.classList.add("menu_btn"); - - user_sec.append(user_pass);user_sec.append(user_name);user_sec.append(user_prevs);user_sec.append(user_buttons); - document.getElementById("user_list").append(user_sec); + make_user(user,res); }); } else if(res["out"] == "bad"){ @@ -135,23 +126,94 @@ }); } } - } - function user_edit(key){ - let user = document.getElementById("user_edit_menu"); - let id = user.getAttribute("login_id"); - let login = user.getAttribute("login_name"); - let admin = JSON.parse(user.getAttribute("login_admin")); - let pass= user.getAttribute("login_pass"); - let value = null; + + function make_user(user,res){ + let user_sec = document.createElement("li");user_sec.id = `user_${user["id"]}`; + let user_name = document.createElement("div");user_name.id = `login_${user["id"]}`;user_name.innerText = user["login"];user_name.setAttribute("onclick",`user_edit("login",${user["id"]})`); + let user_pass = document.createElement("div");user_pass.id = `pass_${user["id"]}`;user_pass.innerText = user["pass"];user_pass.classList.add("pass_blur"); user_pass.setAttribute("onclick",`user_edit("pass",${user["id"]})`); + + let admin = find_admin(res["admins"],user["id"]) + // console.log(admin); + let user_prevs = document.createElement("input");user_prevs.setAttribute("type","checkbox");;user_prevs.id = `admin_${user["id"]}`;user_prevs.checked = admin["admin"];user_prevs.setAttribute("onclick",`user_edit('admin',${user["id"]})`); + let user_prevs_usr = document.createElement("input");user_prevs_usr.setAttribute("type","checkbox");;user_prevs_usr.id = `admin_usr_${user["id"]}`;user_prevs_usr.checked = admin["admin_usr"];user_prevs_usr.setAttribute("onclick",`admin_edit(${user["id"]})`); + let user_prevs_obj = document.createElement("input");user_prevs_obj.setAttribute("type","checkbox");user_prevs_obj.id = `admin_obj_${user["id"]}`;user_prevs_obj.checked = admin["admin_obj"];user_prevs_obj.setAttribute("onclick",`admin_edit(${user["id"]})`); + let user_del_btn = document.createElement("button");user_del_btn.id = `user_del_btn-${user["id"]}`; user_del_btn.innerText = "удалить"; user_del_btn.setAttribute("onclick",`user_del(${user["id"]})`); + if (JSON.parse(admin["admin"]) == true) { + user_prevs_obj.style.pointerEvents = "all"; + user_prevs_usr.style.pointerEvents = "all"; + } + else{ + user_prevs_obj.style.pointerEvents = "none";user_prevs_obj.checked = false; + user_prevs_usr.style.pointerEvents = "none";user_prevs_usr.checked = false; + } + + user_sec.append(user_name);user_sec.append(user_pass); + user_sec.append(user_prevs);user_sec.append(user_prevs_usr);user_sec.append(user_prevs_obj); + user_sec.append(user_del_btn); + document.getElementById("user_list").append(user_sec); + + } + } + + function find_admin(admins,id){ + if(Object.keys(admins).length > 0){ + rights = {admin:false,admin_usr:false,admin_obj:false}; + Object.entries(admins).forEach(([key,value]) => { + // console.log(value); + if(value["uid"] == parseInt(id) && rights != {}){ + rights["admin"] = true; + if(value["rights"] == 3){ + rights["admin_usr"] = true; + rights["admin_obj"] = true; + // return rights; + } + else if(value["rights"] == 1){ + rights["admin_usr"] = false; + rights["admin_obj"] = true; + // return rights; + } + else if(value["rights"] == 2){ + rights["admin_usr"] = true; + rights["admin_obj"] = false; + // return rights; + } + } + // if(key == Object.keys(admins).at(-1)){ + // // console.log("end"); + // rights["admin"] = false; + // rights["admin_obj"] = false; + // rights["admin_usr"] = false; + // // return rights; + // } + }); + } + // console.log(rights,"asd"); + // return rights; + // console.log(rights); + return rights; + } + function user_edit(key,id,...args){ + // console.log(args); + let login = document.getElementById(`login_${id}`).innerText; + let admin = JSON.parse(document.getElementById(`admin_${id}`).checked); + let pass= document.getElementById(`pass_${id}`).innerText; + let value = null; + if (key == 'login' || key == "pass") { + value = ask("",document.getElementById(`${key}_${id}`).innerText); + } + else if (key == "admin"){ + value = admin; + } + else if (key == "rights"){ + value = args[0]["rights"]; + } - if(key!="admin") {value = ask(key,document.getElementById(`${key}_${id}`).innerText)} - else if (confirm(`вы точно хотите изменить привелегии пользователя ${login} на ${!admin}?`) == true){value = (!admin)}; if(value != null){ $.post( "/admin/users/edit",{key:key,value:value,id:id,login:login}) .done(function( res ) { // console.log("serv reg"); if(res["out"] == "good"){ - document.getElementById(`${key}_${id}`).innerText = value; + load_users_data(users_from); } if(res["out"] == "bad"){ msg("пользователь с таким иминем уже есть",{type:"warning"}) @@ -159,10 +221,40 @@ }); } } - function user_del(){ - let user = document.getElementById("user_edit_menu"); - let id = user.getAttribute("login_id"); - let login = user.getAttribute("login_name"); + + function change_admin_prevs(admin,id){ + if (admin) { + document.getElementById(`admin_usr_${id}`).style.pointerEvents = "all"; + document.getElementById(`admin_obj_${id}`).style.pointerEvents = "all"; + } + else{ + document.getElementById(`admin_usr_${id}`).style.pointerEvents = "none"; + document.getElementById(`admin_obj_${id}`).style.pointerEvents = "none"; + document.getElementById(`admin_usr_${id}`).checked = false; + document.getElementById(`admin_obj_${id}`).checked = false; + } + } + + function admin_edit(id){ + let obj_right = document.getElementById(`admin_usr_${id}`).checked; + let user_right = document.getElementById(`admin_obj_${id}`).checked; + if(obj_right & user_right){ + rights = 3; + } + else if(obj_right){ + rights = 2; + } + else if(user_right){ + rights = 1; + } + else{ + rights = 0; + } + console.log(rights); + user_edit("rights",id,{rights:rights}) + } + function user_del(id){ + let login = document.getElementById(`login_${id}`).innerText; if(confirm(`вы точно хотите удалить пользователя ${login}?`) == true){ $.post( "/admin/users/delete",{login:login,id:id}) .done(function( res ) {