mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
updates to track zach's changes to api
This commit is contained in:
parent
408a77dd13
commit
aae42e3802
5 changed files with 92 additions and 30 deletions
|
@ -711,20 +711,39 @@ void DomainGatekeeper::getIsGroupMember(const QString& username, const QUuid gro
|
|||
callbackParams.errorCallbackReceiver = this;
|
||||
callbackParams.errorCallbackMethod = "getIsGroupMemberErrorCallback";
|
||||
|
||||
const QString GET_IS_GROUP_MEMBER_PATH = "api/v1/groups/%1/is_member/%2";
|
||||
const QString GET_IS_GROUP_MEMBER_PATH = "api/v1/groups/%1/membership/%2";
|
||||
QString groupIDStr = groupID.toString().mid(1,36);
|
||||
DependencyManager::get<AccountManager>()->sendRequest(GET_IS_GROUP_MEMBER_PATH.arg(groupIDStr).arg(username),
|
||||
AccountManagerAuth::None,
|
||||
AccountManagerAuth::Required,
|
||||
QNetworkAccessManager::GetOperation, callbackParams);
|
||||
}
|
||||
|
||||
void DomainGatekeeper::getIsGroupMemberJSONCallback(QNetworkReply& requestReply) {
|
||||
// {
|
||||
// "data":{
|
||||
// "username":"sethalves",
|
||||
// "groups":{
|
||||
// "fd55479a-265d-4990-854e-3d04214ad1b0":{
|
||||
// "name":"Blerg Blah",
|
||||
// "rank":{
|
||||
// "name":"admin",
|
||||
// "order":1
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// "status":"success"
|
||||
// }
|
||||
|
||||
QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object();
|
||||
if (jsonObject["status"].toString() == "success") {
|
||||
QString username = jsonObject["username"].toString();
|
||||
QUuid groupID = QUuid(jsonObject["group_id"].toString());
|
||||
bool isMember = jsonObject["is_member"].toBool();
|
||||
_server->_settingsManager.recordGroupMembership(username, groupID, isMember);
|
||||
QJsonObject data = jsonObject["data"].toObject();
|
||||
QJsonObject groups = data["groups"].toObject();
|
||||
QString username = data["username"].toString();
|
||||
_server->_settingsManager.clearGroupMemberships(username);
|
||||
foreach (auto groupID, groups.keys()) {
|
||||
_server->_settingsManager.recordGroupMembership(username, groupID, true);
|
||||
}
|
||||
} else {
|
||||
qDebug() << "getIsGroupMember api call returned:" << QJsonDocument(jsonObject).toJson(QJsonDocument::Compact);
|
||||
}
|
||||
|
|
|
@ -112,6 +112,8 @@ DomainServer::DomainServer(int argc, char* argv[]) :
|
|||
return;
|
||||
}
|
||||
|
||||
_settingsManager.requestMissingGroupIDs();
|
||||
|
||||
setupNodeListAndAssignments();
|
||||
setupAutomaticNetworking();
|
||||
if (!getID().isNull()) {
|
||||
|
|
|
@ -1004,6 +1004,11 @@ void DomainServerSettingsManager::persistToFile() {
|
|||
}
|
||||
|
||||
void DomainServerSettingsManager::requestMissingGroupIDs() {
|
||||
if (!DependencyManager::get<AccountManager>()->hasAuthEndpoint()) {
|
||||
// can't yet.
|
||||
return;
|
||||
}
|
||||
|
||||
QHashIterator<QString, NodePermissionsPointer> i_permissions(_groupPermissions.get());
|
||||
while (i_permissions.hasNext()) {
|
||||
i_permissions.next();
|
||||
|
@ -1044,40 +1049,73 @@ void DomainServerSettingsManager::getGroupID(const QString& groupname) {
|
|||
callbackParams.errorCallbackReceiver = this;
|
||||
callbackParams.errorCallbackMethod = "getGroupIDErrorCallback";
|
||||
|
||||
const QString GET_GROUP_ID_PATH = "api/v1/get_group_id/%1";
|
||||
const QString GET_GROUP_ID_PATH = "api/v1/groups/name/%1";
|
||||
|
||||
qDebug() << "Requesting group ID for group named" << groupname;
|
||||
qDebug() << "************* Requesting group ID for group named" << groupname;
|
||||
|
||||
DependencyManager::get<AccountManager>()->sendRequest(GET_GROUP_ID_PATH.arg(groupname),
|
||||
AccountManagerAuth::None,
|
||||
AccountManagerAuth::Required,
|
||||
QNetworkAccessManager::GetOperation, callbackParams);
|
||||
}
|
||||
|
||||
void DomainServerSettingsManager::getGroupIDJSONCallback(QNetworkReply& requestReply) {
|
||||
// {
|
||||
// "data":{
|
||||
// "groups":[{
|
||||
// "description":null,
|
||||
// "id":"fd55479a-265d-4990-854e-3d04214ad1b0",
|
||||
// "is_list":false,
|
||||
// "membership":{
|
||||
// "permissions":{
|
||||
// "custom_1=":false,
|
||||
// "custom_2=":false,
|
||||
// "custom_3=":false,
|
||||
// "custom_4=":false,
|
||||
// "del_group=":true,
|
||||
// "invite_member=":true,
|
||||
// "kick_member=":true,
|
||||
// "list_members=":true,
|
||||
// "mv_group=":true,
|
||||
// "query_members=":true,
|
||||
// "rank_member=":true
|
||||
// },
|
||||
// "rank":{
|
||||
// "name=":"owner",
|
||||
// "order=":0
|
||||
// }
|
||||
// },
|
||||
// "name":"Blerg Blah"
|
||||
// }]
|
||||
// },
|
||||
// "status":"success"
|
||||
// }
|
||||
QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object();
|
||||
|
||||
if (jsonObject["status"].toString() == "success") {
|
||||
QString groupName = jsonObject["group_name"].toString();
|
||||
QUuid groupID = QUuid(jsonObject["group_id"].toString());
|
||||
QJsonArray groups = jsonObject["data"].toObject()["groups"].toArray();
|
||||
for (int i = 0; i < groups.size(); i++) {
|
||||
QJsonObject group = groups.at(i).toObject();
|
||||
QString groupName = group["name"].toString();
|
||||
QUuid groupID = QUuid(group["id"].toString());
|
||||
|
||||
bool found = false;
|
||||
if (_groupPermissions.contains(groupName)) {
|
||||
qDebug() << "ID for group:" << groupName << "is" << groupID;
|
||||
_groupPermissions[groupName]->setGroupID(groupID);
|
||||
_groupByID[groupID] = _groupPermissions[groupName];
|
||||
found = true;
|
||||
}
|
||||
if (_groupForbiddens.contains(groupName)) {
|
||||
qDebug() << "ID for group:" << groupName << "is" << groupID;
|
||||
_groupForbiddens[groupName]->setGroupID(groupID);
|
||||
_groupByID[groupID] = _groupForbiddens[groupName];
|
||||
found = true;
|
||||
}
|
||||
bool found = false;
|
||||
if (_groupPermissions.contains(groupName)) {
|
||||
qDebug() << "ID for group:" << groupName << "is" << groupID;
|
||||
_groupPermissions[groupName]->setGroupID(groupID);
|
||||
_groupByID[groupID] = _groupPermissions[groupName];
|
||||
found = true;
|
||||
}
|
||||
if (_groupForbiddens.contains(groupName)) {
|
||||
qDebug() << "ID for group:" << groupName << "is" << groupID;
|
||||
_groupForbiddens[groupName]->setGroupID(groupID);
|
||||
_groupByID[groupID] = _groupForbiddens[groupName];
|
||||
found = true;
|
||||
}
|
||||
|
||||
if (found) {
|
||||
packPermissions();
|
||||
} else {
|
||||
qDebug() << "DomainServerSettingsManager::getGroupIDJSONCallback got response for unknown group:" << groupName;
|
||||
if (found) {
|
||||
packPermissions();
|
||||
} else {
|
||||
qDebug() << "DomainServerSettingsManager::getGroupIDJSONCallback got response for unknown group:" << groupName;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
qDebug() << "getGroupID api call returned:" << QJsonDocument(jsonObject).toJson(QJsonDocument::Compact);
|
||||
|
@ -1085,7 +1123,7 @@ void DomainServerSettingsManager::getGroupIDJSONCallback(QNetworkReply& requestR
|
|||
}
|
||||
|
||||
void DomainServerSettingsManager::getGroupIDErrorCallback(QNetworkReply& requestReply) {
|
||||
qDebug() << "getGroupID api call failed:" << requestReply.error();
|
||||
qDebug() << "******************** getGroupID api call failed:" << requestReply.error();
|
||||
}
|
||||
|
||||
void DomainServerSettingsManager::recordGroupMembership(const QString& name, const QUuid groupID, bool isMember) {
|
||||
|
|
|
@ -68,6 +68,7 @@ public:
|
|||
QList<QUuid> getBlacklistGroupIDs();
|
||||
|
||||
// these are used to locally cache the result of calling "api/v1/groups/.../is_member/..." on metaverse's api
|
||||
void clearGroupMemberships(const QString& name) { _groupMembership[name].clear(); }
|
||||
void recordGroupMembership(const QString& name, const QUuid groupID, bool isMember);
|
||||
bool isGroupMember(const QString& name, const QUuid& groupID);
|
||||
|
||||
|
|
|
@ -253,6 +253,8 @@ void AccountManager::sendRequest(const QString& path,
|
|||
}
|
||||
}
|
||||
|
||||
qDebug() << "/////// path =" << path << " requestURL =" << requestURL;
|
||||
|
||||
networkRequest.setUrl(requestURL);
|
||||
|
||||
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {
|
||||
|
|
Loading…
Reference in a new issue