user edit update

This commit is contained in:
N0rdye 2023-09-21 20:38:16 +05:00
parent ba9bfda202
commit da368013e6
4 changed files with 151 additions and 47 deletions

View File

@ -8,13 +8,16 @@ 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)=>{
db.gav("admins",`0`,(admins)=>{
if(data["length"] > 0){
res.send({body:data,count:row_count,out:"good"});
res.send({body:data,admins:admins,count:row_count,out:"good"});
}
else{
res.send({out:"bad"});
}
},true)
},true)
},true)
} catch(error){
func.log("backend user getting in error - "+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"});

View File

@ -18,7 +18,7 @@ SET time_zone = "+00:00";
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `users`
-- База данных: `puzzle`
--
-- --------------------------------------------------------

6
db.js
View File

@ -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) => {

View File

@ -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 @@
</div>
</div>
<section id="users_section">
<div style="height: 360px;">
<li id="first_user"><div>Логин</div><div>Превилегии</div><div>Функции</div></li>
<ul id="user_list"></ul>
<div style="height: 330px;background-color: white;margin-bottom: 3vh;">
<li id="first_user"><div>Логин</div><div>Пароль</div><div>Админ. права</div><div>Амин. польз</div><div>Админ. объект.</div><div>Удалить</div></li>
<ul id="user_list" style="padding-inline: 2vw;"></ul>
</div>
<div style="display: flex;justify-content: space-between;margin: auto;">
<div style="display: flex;"><h1>Всего:&nbsp;</h1> <h1 id="users_count">0</h1></div>
@ -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;
if(key!="admin") {value = ask(key,document.getElementById(`${key}_${id}`).innerText)}
else if (confirm(`вы точно хотите изменить привелегии пользователя ${login} на ${!admin}?`) == true){value = (!admin)};
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(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 ) {