mirror of
https://github.com/overte-org/overte.git
synced 2025-07-23 15:24:03 +02:00
fetch rank names from web api after getting a group's ID
This commit is contained in:
parent
c7793845cb
commit
2a25f458fc
3 changed files with 102 additions and 2 deletions
|
@ -1090,6 +1090,7 @@ void DomainServerSettingsManager::getGroupIDJSONCallback(QNetworkReply& requestR
|
||||||
// "status":"success"
|
// "status":"success"
|
||||||
// }
|
// }
|
||||||
QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object();
|
QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object();
|
||||||
|
|
||||||
if (jsonObject["status"].toString() == "success") {
|
if (jsonObject["status"].toString() == "success") {
|
||||||
QJsonArray groups = jsonObject["data"].toObject()["groups"].toArray();
|
QJsonArray groups = jsonObject["data"].toObject()["groups"].toArray();
|
||||||
for (int i = 0; i < groups.size(); i++) {
|
for (int i = 0; i < groups.size(); i++) {
|
||||||
|
@ -1113,6 +1114,7 @@ void DomainServerSettingsManager::getGroupIDJSONCallback(QNetworkReply& requestR
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
packPermissions();
|
packPermissions();
|
||||||
|
getGroupRanks(groupID);
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "DomainServerSettingsManager::getGroupIDJSONCallback got response for unknown group:" << groupName;
|
qDebug() << "DomainServerSettingsManager::getGroupIDJSONCallback got response for unknown group:" << groupName;
|
||||||
}
|
}
|
||||||
|
@ -1126,6 +1128,100 @@ void DomainServerSettingsManager::getGroupIDErrorCallback(QNetworkReply& request
|
||||||
qDebug() << "******************** getGroupID api call failed:" << requestReply.error();
|
qDebug() << "******************** getGroupID api call failed:" << requestReply.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DomainServerSettingsManager::getGroupRanks(const QUuid& groupID) {
|
||||||
|
JSONCallbackParameters callbackParams;
|
||||||
|
callbackParams.jsonCallbackReceiver = this;
|
||||||
|
callbackParams.jsonCallbackMethod = "getGroupRanksJSONCallback";
|
||||||
|
callbackParams.errorCallbackReceiver = this;
|
||||||
|
callbackParams.errorCallbackMethod = "getGroupRanksErrorCallback";
|
||||||
|
|
||||||
|
const QString GET_GROUP_RANKS_PATH = "api/v1/groups/%1/ranks";
|
||||||
|
|
||||||
|
qDebug() << "************* Requesting group ranks for group" << groupID;
|
||||||
|
|
||||||
|
DependencyManager::get<AccountManager>()->sendRequest(GET_GROUP_RANKS_PATH.arg(groupID.toString().mid(1,36)),
|
||||||
|
AccountManagerAuth::Required,
|
||||||
|
QNetworkAccessManager::GetOperation, callbackParams);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DomainServerSettingsManager::getGroupRanksJSONCallback(QNetworkReply& requestReply) {
|
||||||
|
// {
|
||||||
|
// "current_page":1,
|
||||||
|
// "data":{
|
||||||
|
// "groups":{
|
||||||
|
// "fd55479a-265d-4990-854e-3d04214ad1b0":{
|
||||||
|
// "ranks":[
|
||||||
|
// {
|
||||||
|
// "name":"owner",
|
||||||
|
// "order":0,
|
||||||
|
// "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
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// "name":"admin",
|
||||||
|
// "order":1,
|
||||||
|
// "permissions":{
|
||||||
|
// "custom_1":false,
|
||||||
|
// "custom_2":false,
|
||||||
|
// "custom_3":false,
|
||||||
|
// "custom_4":false,
|
||||||
|
// "del_group":false,
|
||||||
|
// "invite_member":false,
|
||||||
|
// "kick_member":false,
|
||||||
|
// "list_members":false,
|
||||||
|
// "mv_group":false,
|
||||||
|
// "query_members":false,
|
||||||
|
// "rank_member":false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// "per_page":30,
|
||||||
|
// "status":"success",
|
||||||
|
// "total_entries":2,
|
||||||
|
// "total_pages":1
|
||||||
|
// }
|
||||||
|
|
||||||
|
QJsonObject jsonObject = QJsonDocument::fromJson(requestReply.readAll()).object();
|
||||||
|
if (jsonObject["status"].toString() == "success") {
|
||||||
|
QJsonObject groups = jsonObject["data"].toObject()["groups"].toObject();
|
||||||
|
foreach (auto groupID, groups.keys()) {
|
||||||
|
QJsonObject group = groups[groupID].toObject();
|
||||||
|
QJsonArray ranks = group["ranks"].toArray();
|
||||||
|
for (int rankIndex = 0; rankIndex < ranks.size(); rankIndex++) {
|
||||||
|
QJsonObject rank = ranks.at(rankIndex).toObject();
|
||||||
|
QString rankName = rank["name"].toString();
|
||||||
|
int rankOrder = rank["order"].toInt();
|
||||||
|
qDebug() << "**** " << groupID << "rank name =" << rankName << " order =" << rankOrder;
|
||||||
|
QVector<QString>& ranksForGroup = _groupRanks[groupID];
|
||||||
|
if (ranksForGroup.size() < rankOrder + 1) {
|
||||||
|
ranksForGroup.resize(rankOrder + 1);
|
||||||
|
}
|
||||||
|
ranksForGroup[rankOrder] = rankName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
qDebug() << "getGroupRanks api call returned:" << QJsonDocument(jsonObject).toJson(QJsonDocument::Compact);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DomainServerSettingsManager::getGroupRanksErrorCallback(QNetworkReply& requestReply) {
|
||||||
|
qDebug() << "******************** getGroupRanks api call failed:" << requestReply.error();
|
||||||
|
}
|
||||||
|
|
||||||
void DomainServerSettingsManager::recordGroupMembership(const QString& name, const QUuid groupID, bool isMember) {
|
void DomainServerSettingsManager::recordGroupMembership(const QString& name, const QUuid groupID, bool isMember) {
|
||||||
_groupMembership[name][groupID] = isMember;
|
_groupMembership[name][groupID] = isMember;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,8 @@ signals:
|
||||||
public slots:
|
public slots:
|
||||||
void getGroupIDJSONCallback(QNetworkReply& requestReply);
|
void getGroupIDJSONCallback(QNetworkReply& requestReply);
|
||||||
void getGroupIDErrorCallback(QNetworkReply& requestReply);
|
void getGroupIDErrorCallback(QNetworkReply& requestReply);
|
||||||
|
void getGroupRanksJSONCallback(QNetworkReply& requestReply);
|
||||||
|
void getGroupRanksErrorCallback(QNetworkReply& requestReply);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void processSettingsRequestPacket(QSharedPointer<ReceivedMessage> message);
|
void processSettingsRequestPacket(QSharedPointer<ReceivedMessage> message);
|
||||||
|
@ -106,6 +108,7 @@ private:
|
||||||
void requestMissingGroupIDs();
|
void requestMissingGroupIDs();
|
||||||
void getGroupID(const QString& groupname);
|
void getGroupID(const QString& groupname);
|
||||||
NodePermissionsPointer lookupGroupByID(const QUuid& id);
|
NodePermissionsPointer lookupGroupByID(const QUuid& id);
|
||||||
|
void getGroupRanks(const QUuid& groupID);
|
||||||
|
|
||||||
void packPermissionsForMap(QString mapName, NodePermissionsMap& agentPermissions, QString keyPath);
|
void packPermissionsForMap(QString mapName, NodePermissionsMap& agentPermissions, QString keyPath);
|
||||||
void packPermissions();
|
void packPermissions();
|
||||||
|
@ -117,6 +120,9 @@ private:
|
||||||
NodePermissionsMap _groupForbiddens; // permissions denied due to membership in a specific group
|
NodePermissionsMap _groupForbiddens; // permissions denied due to membership in a specific group
|
||||||
QHash<QUuid, NodePermissionsPointer> _groupByID; // similar to _groupPermissions but key is group-id rather than name
|
QHash<QUuid, NodePermissionsPointer> _groupByID; // similar to _groupPermissions but key is group-id rather than name
|
||||||
|
|
||||||
|
// remember the responses to api/v1/groups/%1/ranks
|
||||||
|
QHash<QUuid, QVector<QString>> _groupRanks;
|
||||||
|
|
||||||
// keep track of answers to api queries about which users are in which groups
|
// keep track of answers to api queries about which users are in which groups
|
||||||
QHash<QString, QHash<QUuid, bool>> _groupMembership;
|
QHash<QString, QHash<QUuid, bool>> _groupMembership;
|
||||||
};
|
};
|
||||||
|
|
|
@ -249,8 +249,6 @@ void AccountManager::sendRequest(const QString& path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "/////// path =" << path << " requestURL =" << requestURL;
|
|
||||||
|
|
||||||
networkRequest.setUrl(requestURL);
|
networkRequest.setUrl(requestURL);
|
||||||
|
|
||||||
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {
|
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {
|
||||||
|
|
Loading…
Reference in a new issue