/// POST: /usuario RequestResult Request_POST_Usuario(Database* db, const std::string& uriparams, const std::string& qparams, const std::string& body) { RequestResult ret; Usuario user; // Parseamos el JSON para cargar los datos posteados auto js = JSONParse(body); user.load(js); // Cargamos el usuario del uri user.id = uriparams; std::string err_str; if(db->createUsuario(user, err_str)) { ret.code = 201; }else{ log.msg(LOG_TYPE::INFO, std::string("Error creando usuario `") + user.id + "`"); ret.code = 401; ret.data = std::string("{ \"error\": \"") + err_str + "\" }"; } return ret; }
/// PUT: /usuario RequestResult Request_PUT_Usuario(Database* db, const std::string& uriparams, const std::string& qparams, const std::string& body) { RequestResult ret; auto qdict = parseQueryParams(qparams); Usuario usr; // Debe pasar la clave tambien if(qdict.size() < 2 || !db->validateSession(qdict["r_user"], qdict["token"])) { ret.code = 401; ret.data = "{\"error\": \"token invalido\" }"; return ret; } if(uriparams != qdict["r_user"]) { ret.code = 401; ret.data = "{\"error\": \"permiso denegado\" }"; return ret; } if(!db->loadUsuario(uriparams, usr)) { ret.code = 500; ret.data = "{\"error\": \"error cargando usuario\" }"; return ret; } if(qdict["password"] != usr.password) { ret.code = 401; ret.data = "{\"error\": \"password invalido\" }"; return ret; } // Editamos los valores que nos pasaron (si los pasaron) auto js = JSONParse(body); usr.load(js); // Guardamos el usuario if(!db->saveUsuario(usr)) { // TODO: desdoblar en los distintos ret.code = 401; ret.data = "{ \"error\": \"atributos invalidos\" }"; }else{ ret.code = 201; } return ret; }