1
0
Fork 0

Handle non-existing user config in RestUserHandler (#3200)

* handle non-existing user config

* fixing possible error with user data
This commit is contained in:
Simon Grätzer 2017-09-04 18:01:30 +02:00 committed by Frank Celler
parent da4d7966a8
commit 06f5cefd9f
2 changed files with 6 additions and 6 deletions

View File

@ -147,12 +147,12 @@ RestStatus RestUsersHandler::getRequest(AuthInfo* authInfo) {
} else if (suffixes[1] == "config") { } else if (suffixes[1] == "config") {
//_api/user/<user>//config //_api/user/<user>//config
VPackBuilder data = authInfo->getConfigData(user); VPackBuilder data = authInfo->getConfigData(user);
VPackSlice resp = data.slice();
if (suffixes.size() == 3) { if (suffixes.size() == 3) {
generateSuccess(ResponseCode::OK, data.slice().get(suffixes[2])); resp = data.slice().get(suffixes[2]);
} else {
generateSuccess(ResponseCode::OK, data.slice());
} }
generateSuccess(ResponseCode::OK,
resp.isNone() ? VPackSlice::nullSlice() : resp);
} else { } else {
generateError(ResponseCode::BAD, TRI_ERROR_BAD_PARAMETER); generateError(ResponseCode::BAD, TRI_ERROR_BAD_PARAMETER);
} }

View File

@ -625,7 +625,7 @@ Result AuthInfo::removeAllUsers() {
VPackBuilder AuthInfo::getConfigData(std::string const& username) { VPackBuilder AuthInfo::getConfigData(std::string const& username) {
loadFromDB(); loadFromDB();
VPackBuilder bb = QueryUser(_queryRegistry, username); VPackBuilder bb = QueryUser(_queryRegistry, username);
return VPackBuilder(bb.slice().get("configData")); return bb.isEmpty() ? bb : VPackBuilder(bb.slice().get("configData"));
} }
Result AuthInfo::setConfigData(std::string const& user, Result AuthInfo::setConfigData(std::string const& user,
@ -652,7 +652,7 @@ Result AuthInfo::setConfigData(std::string const& user,
VPackBuilder AuthInfo::getUserData(std::string const& username) { VPackBuilder AuthInfo::getUserData(std::string const& username) {
loadFromDB(); loadFromDB();
VPackBuilder bb = QueryUser(_queryRegistry, username); VPackBuilder bb = QueryUser(_queryRegistry, username);
return VPackBuilder(bb.slice().get("userData")); return bb.isEmpty() ? bb : VPackBuilder(bb.slice().get("userData"));
} }
Result AuthInfo::setUserData(std::string const& user, Result AuthInfo::setUserData(std::string const& user,