diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index a5ef14f..b22c2de 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -933,6 +933,9 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmUserRequest(bool allaccess, } if(go){ ok = sysadm::UserManager::modifyUser(out, in_args.toObject() ); } + }else if(action=="groupshow"){ + ok = sysadm::UserManager::listGroups(out, (allaccess ? "" : user) ); + }else if(action=="personacrypt_init"){ qDebug() << "got PC init request:" << in_args << allaccess << user; bool go = true; diff --git a/src/server/library/sysadm-users.cpp b/src/server/library/sysadm-users.cpp index 7beaf69..2c208e4 100644 --- a/src/server/library/sysadm-users.cpp +++ b/src/server/library/sysadm-users.cpp @@ -187,6 +187,47 @@ bool UserManager::modifyUser(QJsonObject* out, QJsonObject obj){ return ok; } +// === GROUP MANAGEMENT === +bool UserManager::listGroups(QJsonObject* out, QString user ){ + bool ok = false; + QStringList info = General::RunCommand(ok, "pw", QStringList() << "groupshow" << "-a", "",QStringList() << "MM_CHARSET=UTF-8").split("\n"); + if(ok){ + for(int i=0; iinsert(ginfo[0], obj); + } + } + return ok; +} + +bool UserManager::addGroup(QJsonObject* out, QJsonObject input){ + bool ok = false; + + return ok; +} + +bool UserManager::removeGroup(QString name){ + bool ok = false; + QStringList args; args << "groupdel" << "-n" << name; + QString res = General::RunCommand(ok, "pw", args); + if(!ok){ qDebug() << "[ERROR] Could not delete group:"<< name << "\n - Result Message:" << res; } + return ok; +} + +bool UserManager::modifyGroup(QJsonObject* out, QJsonObject input){ + bool ok = false; + + return ok; +} + // === PERSONACRYPT FUNCTIONS === //List all the devices currently available to be used for a PersonaCrypt User QStringList UserManager::getAvailablePersonaCryptDevices(){ @@ -206,8 +247,7 @@ bool UserManager::InitializePersonaCryptDevice(QString username, QString pass, Q pfile.write(pass.toUtf8().data()); pfile.close(); QString result = General::RunCommand(ok, "personacrypt", QStringList() << "init" << username << pfile.fileName() << device); - //ok = General::RunQuickCommand("personacrypt", QStringList() << "init" << username << pfile.fileName() << device); - qDebug() << "PC init result:" << result; + //qDebug() << "PC init result:" << result; } return ok; } diff --git a/src/server/library/sysadm-users.h b/src/server/library/sysadm-users.h index 665a517..c37fa0b 100644 --- a/src/server/library/sysadm-users.h +++ b/src/server/library/sysadm-users.h @@ -17,11 +17,19 @@ public: //List all the users currently registered on the system static bool listUsers(QJsonObject* out, bool showall, QString user = ""); - //Add a new user to the system + //User Management static bool addUser(QJsonObject* out, QJsonObject inputs); static bool removeUser(QString username, bool deletehomedir = true); static bool modifyUser(QJsonObject* out, QJsonObject inputs); + //List all the groups current registered on the system + static bool listGroups(QJsonObject* out, QString user = ""); + + //Group Management + static bool addGroup(QJsonObject* out, QJsonObject input); + static bool removeGroup(QString name); + static bool modifyGroup(QJsonObject* out, QJsonObject input); + //List all the devices currently available to be used for a PersonaCrypt User static QStringList getAvailablePersonaCryptDevices();