From 86528334e0ad92e4e465356e36ab1c21566ed4ca Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 25 Jul 2016 10:14:06 -0400 Subject: [PATCH] [API CHANGE] Add a new API call to the sysadm/users framework as well as add a bunch more output to current users requests (error/success reporting instead of just the overall good/bad flag). New API call: "action":"userdelete" REQUIRED: "name": OPTIONAL: "clean_home"="true/false" (default is "true") REST Request (example): ------------------------------- PUT /sysadm/users { "name" : "test", "action" : "userdelete" } WebSocket Request: ------------------------------- { "id" : "fooid", "name" : "users", "args" : { "action" : "userdelete", "name" : "test" }, "namespace" : "sysadm" } Response: ------------------------------- { "args": { "result": "success" }, "id": "fooid", "name": "response", "namespace": "sysadm" } --- src/server/WebBackend.cpp | 13 +++++++++++++ src/server/WebBackendSlots.cpp | 20 -------------------- src/server/WebSocket.h | 4 ++-- src/server/server.pro | 1 - 4 files changed, 15 insertions(+), 23 deletions(-) delete mode 100644 src/server/WebBackendSlots.cpp diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index 2be24bc..4f0587f 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -911,6 +911,19 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmUserRequest(bool allaccess, }else if(action=="useradd" && allaccess){ //requires all access to create new users ok = sysadm::UserManager::addUser(out, in_args.toObject()); + }else if(action=="userdelete" && allaccess){ //requires all access to remove users + //REQUIRED: "name" + //OPTIONAL: "clean_home"="false" (true by default) + QString deluser = in_args.toObject().value("name").toString(); + if(deluser != user){ //cannot delete the currently-used user + bool clean = true; + if(in_args.toObject().contains("clean_home")){ clean = (in_args.toObject().value("clean_home").toString().toLower() == "false"); } + ok = sysadm::UserManager::removeUser(deluser, clean); + if(ok){ out->insert("result","success"); } + else{ out->insert("error","Could not delete user"); } + }else{ + out->insert("error","Cannot delete the current user"); + } } return (ok ? RestOutputStruct::OK : RestOutputStruct::BADREQUEST); } diff --git a/src/server/WebBackendSlots.cpp b/src/server/WebBackendSlots.cpp deleted file mode 100644 index 0699f28..0000000 --- a/src/server/WebBackendSlots.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// =============================== -// Slots for long running Library Tasks -// Available under the 3-clause BSD License -// Written by: Kris Moore FEB 2016 -// ================================= -#include -#define DEBUG 0 - - -// Iohyve Fetch is done -void WebSocket::slotIohyveFetchDone(QString id, int retcode, QString log) -{ - qDebug() << "Fetch Done" << id << retcode << log; -} - -// Iohyve Fetch has output to read -void WebSocket::slotIohyveFetchProcessOutput(QString output) -{ - qDebug() << "Fetch Do" << output; -} diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index 955689c..220c4ba 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -111,8 +111,8 @@ private slots: void SslError(const QList&); //sslErrors() signal // Library Slots - void slotIohyveFetchDone(QString, int, QString); - void slotIohyveFetchProcessOutput(QString); + //void slotIohyveFetchDone(QString, int, QString); + //void slotIohyveFetchProcessOutput(QString); //Bridge Connection Handling void startBridgeAuth(); diff --git a/src/server/server.pro b/src/server/server.pro index 3738176..51d7fb0 100644 --- a/src/server/server.pro +++ b/src/server/server.pro @@ -19,7 +19,6 @@ SOURCES += main.cpp \ WebSocket.cpp \ RestStructs.cpp \ WebBackend.cpp \ - WebBackendSlots.cpp \ AuthorizationManager.cpp \ EventWatcher.cpp \ LogManager.cpp \