updates to track zach's changes to api

This commit is contained in:
Seth Alves 2016-06-30 16:14:46 -07:00
parent 408a77dd13
commit aae42e3802
5 changed files with 92 additions and 30 deletions

View file

@ -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);
}

View file

@ -112,6 +112,8 @@ DomainServer::DomainServer(int argc, char* argv[]) :
return;
}
_settingsManager.requestMissingGroupIDs();
setupNodeListAndAssignments();
setupAutomaticNetworking();
if (!getID().isNull()) {

View file

@ -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) {

View file

@ -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);

View file

@ -253,6 +253,8 @@ void AccountManager::sendRequest(const QString& path,
}
}
qDebug() << "/////// path =" << path << " requestURL =" << requestURL;
networkRequest.setUrl(requestURL);
if (VERBOSE_HTTP_REQUEST_DEBUGGING) {