mirror of https://gitee.com/bigwinds/arangodb
Handle non-existing user config in RestUserHandler (#3200)
* handle non-existing user config * fixing possible error with user data
This commit is contained in:
parent
da4d7966a8
commit
06f5cefd9f
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue