mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 02:36:54 +02:00
code to unpack permissions into a usable data structure
This commit is contained in:
parent
f082201941
commit
ae0c8a96f2
3 changed files with 87 additions and 0 deletions
40
domain-server/src/AgentPermissions.h
Normal file
40
domain-server/src/AgentPermissions.h
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
//
|
||||||
|
// AgentPermissions.h
|
||||||
|
// domain-server/src
|
||||||
|
//
|
||||||
|
// Created by Seth Alves on 2016-6-1.
|
||||||
|
// Copyright 2016 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef hifi_AgentPermissions_h
|
||||||
|
#define hifi_AgentPermissions_h
|
||||||
|
|
||||||
|
class AgentPermissions {
|
||||||
|
public:
|
||||||
|
AgentPermissions(QMap<QString, QVariant> perms) {
|
||||||
|
_id = perms["permissions_id"].toString();
|
||||||
|
canConnectToDomain = perms["id_can_connect"].toBool();
|
||||||
|
canAdjustLocks = perms["id_can_adjust_locks"].toBool();
|
||||||
|
canRezPermanentEntities = perms["id_can_rez"].toBool();
|
||||||
|
canRezTemporaryEntities = perms["id_can_rez_tmp"].toBool();
|
||||||
|
canWriteToAssetServer = perms["id_can_write_to_asset_server"].toBool();
|
||||||
|
};
|
||||||
|
|
||||||
|
QString getID() { return _id; }
|
||||||
|
|
||||||
|
bool canConnectToDomain { false };
|
||||||
|
bool canAdjustLocks { false };
|
||||||
|
bool canRezPermanentEntities { false };
|
||||||
|
bool canRezTemporaryEntities { false };
|
||||||
|
bool canWriteToAssetServer { false };
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString _id;
|
||||||
|
};
|
||||||
|
|
||||||
|
using AgentPermissionsPointer = std::shared_ptr<AgentPermissions>;
|
||||||
|
|
||||||
|
#endif // hifi_AgentPermissions_h
|
|
@ -26,6 +26,9 @@
|
||||||
|
|
||||||
#include "DomainServerSettingsManager.h"
|
#include "DomainServerSettingsManager.h"
|
||||||
|
|
||||||
|
#define WANT_DEBUG 1
|
||||||
|
|
||||||
|
|
||||||
const QString SETTINGS_DESCRIPTION_RELATIVE_PATH = "/resources/describe-settings.json";
|
const QString SETTINGS_DESCRIPTION_RELATIVE_PATH = "/resources/describe-settings.json";
|
||||||
|
|
||||||
const QString DESCRIPTION_SETTINGS_KEY = "settings";
|
const QString DESCRIPTION_SETTINGS_KEY = "settings";
|
||||||
|
@ -190,12 +193,49 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
|
||||||
_configMap.loadMasterAndUserConfig(argumentList);
|
_configMap.loadMasterAndUserConfig(argumentList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (oldVersion < 1.3) {
|
||||||
|
// This was prior to the permissions-grid in the domain-server settings page
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unpackPermissions();
|
||||||
|
|
||||||
// write the current description version to our settings
|
// write the current description version to our settings
|
||||||
appSettings.setValue(JSON_SETTINGS_VERSION_KEY, _descriptionVersion);
|
appSettings.setValue(JSON_SETTINGS_VERSION_KEY, _descriptionVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DomainServerSettingsManager::unpackPermissions() {
|
||||||
|
QList<QVariant> permsHashList = valueOrDefaultValueForKeyPath(AGENT_PERMISSIONS_KEYPATH).toList();
|
||||||
|
foreach (QVariant permsHash, permsHashList) {
|
||||||
|
AgentPermissionsPointer perms { new AgentPermissions(permsHash.toMap()) };
|
||||||
|
_agentPermissions[perms->getID()] = perms;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef WANT_DEBUG
|
||||||
|
qDebug() << "--------------- permissions ---------------------";
|
||||||
|
QHashIterator<QString, AgentPermissionsPointer> i(_agentPermissions);
|
||||||
|
while (i.hasNext()) {
|
||||||
|
i.next();
|
||||||
|
AgentPermissionsPointer perms = i.value();
|
||||||
|
qDebug() << i.key()
|
||||||
|
<< perms->canConnectToDomain
|
||||||
|
<< perms->canAdjustLocks
|
||||||
|
<< perms->canRezPermanentEntities
|
||||||
|
<< perms->canRezTemporaryEntities
|
||||||
|
<< perms->canWriteToAssetServer;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
AgentPermissionsPointer DomainServerSettingsManager::getPermissionsForName(QString name) const {
|
||||||
|
if (_agentPermissions.contains(name)) {
|
||||||
|
return _agentPermissions[name];
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
QVariant DomainServerSettingsManager::valueOrDefaultValueForKeyPath(const QString& keyPath) {
|
QVariant DomainServerSettingsManager::valueOrDefaultValueForKeyPath(const QString& keyPath) {
|
||||||
const QVariant* foundValue = valueForKeyPath(_configMap.getMergedConfig(), keyPath);
|
const QVariant* foundValue = valueForKeyPath(_configMap.getMergedConfig(), keyPath);
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include <HTTPManager.h>
|
#include <HTTPManager.h>
|
||||||
|
|
||||||
#include <ReceivedMessage.h>
|
#include <ReceivedMessage.h>
|
||||||
|
#include "AgentPermissions.h"
|
||||||
|
|
||||||
const QString SETTINGS_PATHS_KEY = "paths";
|
const QString SETTINGS_PATHS_KEY = "paths";
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ const QString SETTINGS_PATH_JSON = SETTINGS_PATH + ".json";
|
||||||
|
|
||||||
const QString ALLOWED_USERS_SETTINGS_KEYPATH = "security.allowed_users";
|
const QString ALLOWED_USERS_SETTINGS_KEYPATH = "security.allowed_users";
|
||||||
const QString RESTRICTED_ACCESS_SETTINGS_KEYPATH = "security.restricted_access";
|
const QString RESTRICTED_ACCESS_SETTINGS_KEYPATH = "security.restricted_access";
|
||||||
|
const QString AGENT_PERMISSIONS_KEYPATH = "security.permissions";
|
||||||
|
|
||||||
class DomainServerSettingsManager : public QObject {
|
class DomainServerSettingsManager : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -41,6 +43,8 @@ public:
|
||||||
QVariantMap& getUserSettingsMap() { return _configMap.getUserConfig(); }
|
QVariantMap& getUserSettingsMap() { return _configMap.getUserConfig(); }
|
||||||
QVariantMap& getSettingsMap() { return _configMap.getMergedConfig(); }
|
QVariantMap& getSettingsMap() { return _configMap.getMergedConfig(); }
|
||||||
|
|
||||||
|
AgentPermissionsPointer getPermissionsForName(QString name) const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void processSettingsRequestPacket(QSharedPointer<ReceivedMessage> message);
|
void processSettingsRequestPacket(QSharedPointer<ReceivedMessage> message);
|
||||||
|
|
||||||
|
@ -58,6 +62,9 @@ private:
|
||||||
HifiConfigVariantMap _configMap;
|
HifiConfigVariantMap _configMap;
|
||||||
|
|
||||||
friend class DomainServer;
|
friend class DomainServer;
|
||||||
|
|
||||||
|
void unpackPermissions();
|
||||||
|
QHash<QString, AgentPermissionsPointer> _agentPermissions;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_DomainServerSettingsManager_h
|
#endif // hifi_DomainServerSettingsManager_h
|
||||||
|
|
Loading…
Reference in a new issue