$response['public_key'] = $public_key;
                    $code = 200;
                } else {
                    $response['public_key'] = "could not create or read keys";
                    $code = 500;
                    Log::write("Could not create or read keys from user", $user['username']);
                }
                //get access level of user (stored in employee table)
                $access_level = $oUser->getAccessLevel($loginId);
                $response['access_level'] = $access_level;
                if ($access_level == NULL) {
                    Log::write("*** access_level of user is NULL", $user['username']);
                }
            } else {
                // unknown error occurred
                $response['error'] = true;
                $response['message'] = "An error occurred. Possible duplicate username?";
                $code = 500;
                Log::write("Could not get user from database", $user['username']);
            }
        } else {
            // user credentials are wrong
            $response['error'] = true;
            $response['message'] = 'Login failed. Incorrect credentials';
            $code = 401;
            Log::write("Login failed. Incorrect credentials");
        }
        //finally the response
        R::echoResponse($code, $response);
    });
});
        $body = $app->request()->getBody();
        $request = json_decode($body, true);
        $response = array();
        $intervID = $request['IntervID'];
        $action = $request['Action'];
        $date_action = $request['Date_action'];
        $time = $request['Time'];
        //read user db and name from request
        $userdb = R::readDbFromRequest();
        $by_user = R::readUsernameFromRequest();
        //add work
        $oIntervention = new Intervention($userdb);
        $workId = $oIntervention->addWork($intervID, $action, $date_action, $time, $by_user);
        //read old total work
        $oldTotalWork = $oIntervention->getTotalWork($intervID);
        //update new total work as hours (not as minutes)
        $newTotalWork = $oldTotalWork + $time / 60;
        $InUpdated = $oIntervention->updateInterventionWork($intervID, $newTotalWork, $by_user);
        if ($workId != NULL & $InUpdated) {
            $response["error"] = false;
            $response["message"] = "Intervention work created";
            Log::write("Intervention work with ID " . $workId . " created successfully.", $by_user);
            R::echoResponse(201, $response);
        } else {
            $response["error"] = true;
            $response["message"] = "Could not create intervention work";
            Log::write("Failed to create new intervention work.", $by_user);
            R::echoResponse(500, $response);
        }
    });
});
 /**
  * Read the user belonging to the incoming request and get his/her defaultDB.
  *
  * @return String $userdb
  */
 public static function readDbFromRequest()
 {
     $app = \Slim\Slim::getInstance();
     $oUser = new User();
     $request = $app->request();
     $public_key = $request->headers('X-PublicKey');
     //get User array from sent public key
     $user = $oUser->getUserByPublicKey($public_key);
     $userdb = $oUser->setDefaultDatabase($user['LoginID']);
     if ($userdb != NULL) {
         return $userdb;
     } else {
         $response["error"] = true;
         $response["defaultdb"] = "Could not select database of user.";
         LogHelper::write("Could not select database, check if the user's DefaultDB is available.", $user['username']);
         RequestHelper::echoResponse(500, $response);
         $app->stop();
     }
 }