diff --git a/arangod/RestHandler/RestUsersHandler.cpp b/arangod/RestHandler/RestUsersHandler.cpp index bf08336764..c687b89222 100644 --- a/arangod/RestHandler/RestUsersHandler.cpp +++ b/arangod/RestHandler/RestUsersHandler.cpp @@ -147,12 +147,12 @@ RestStatus RestUsersHandler::getRequest(AuthInfo* authInfo) { } else if (suffixes[1] == "config") { //_api/user///config VPackBuilder data = authInfo->getConfigData(user); + VPackSlice resp = data.slice(); if (suffixes.size() == 3) { - generateSuccess(ResponseCode::OK, data.slice().get(suffixes[2])); - } else { - generateSuccess(ResponseCode::OK, data.slice()); + resp = data.slice().get(suffixes[2]); } - + generateSuccess(ResponseCode::OK, + resp.isNone() ? VPackSlice::nullSlice() : resp); } else { generateError(ResponseCode::BAD, TRI_ERROR_BAD_PARAMETER); } diff --git a/arangod/VocBase/AuthInfo.cpp b/arangod/VocBase/AuthInfo.cpp index c88d6013fe..d13c0aa0f6 100644 --- a/arangod/VocBase/AuthInfo.cpp +++ b/arangod/VocBase/AuthInfo.cpp @@ -625,7 +625,7 @@ Result AuthInfo::removeAllUsers() { VPackBuilder AuthInfo::getConfigData(std::string const& username) { loadFromDB(); 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, @@ -652,7 +652,7 @@ Result AuthInfo::setConfigData(std::string const& user, VPackBuilder AuthInfo::getUserData(std::string const& username) { loadFromDB(); 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,