Browse Source

Merge branch '29-us20-1-signup-command-server' into develop

Resolve "US20.1: Signup command (Server)"

See merge request tobias.wach/ccats!30

Closes #29
Jonas Pflanzer 5 năm trước cách đây
mục cha
commit
b55c4601d4
3 tập tin đã thay đổi với 17 bổ sung7 xóa
  1. 1 1
      daemon/include/UserManager.h
  2. 13 4
      daemon/src/JsonCommander.cpp
  3. 3 2
      daemon/src/UserManager.cpp

+ 1 - 1
daemon/include/UserManager.h

@@ -35,7 +35,7 @@ public:
    * @param user the name of the users
    * @param pw password in plain text
    */
-  static void addUser(const std::string &name, const std::string &pw);
+  static bool addUser(const std::string &name, const std::string &pw);
 
   /**
    * Delete a new user and delete from storage.

+ 13 - 4
daemon/src/JsonCommander.cpp

@@ -402,11 +402,20 @@ JsonCommander::Response JsonCommander::checkLogin(const Json::Value &message) {
     response.json["accept"] = true;
     response.json["error"] = "";
   } else if (!message["login"].asBool()) {
-    // TODO implement registration
-    response.action = closeAndSend;
-    response.json["accept"] = false;
-    response.json["error"] = "registration is not yet implemented";
+    // add user. Check if already exists before
+    if (!UserManager::addUser(message["user"].asString(),
+                              message["pass"].asString())) {
+      response.action = closeAndSend;
+      response.json["accept"] = false;
+      response.json["error"] = "user does already exist";
+    } else {
+      response.action = send;
+      response.json["accept"] = true;
+      response.json["error"] = "";
+    }
+
   } else {
+    // reject user
     response.action = closeAndSend;
     response.json["accept"] = false;
     response.json["error"] = "wrong username or password";

+ 3 - 2
daemon/src/UserManager.cpp

@@ -32,16 +32,17 @@ bool UserManager::isAllowed(const std::string &name, const std::string &pw) {
   return false;
 }
 
-void UserManager::addUser(const std::string &name, const std::string &pw) {
+bool UserManager::addUser(const std::string &name, const std::string &pw) {
   std::map<std::string, std::string> user_map;
   readFromFile(user_map);
   auto it = user_map.find(name);
   // if user exists, do nothing
   if (it != user_map.end()) {
-    return;
+    return false;
   }
   user_map.insert(std::pair<std::string, std::string>(name, pw));
   writeToFile(user_map);
+  return true;
 }
 
 void UserManager::deleteUser(const std::string &name, const std::string &pw) {