mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 06:44:06 +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"
|
||||
|
||||
#define WANT_DEBUG 1
|
||||
|
||||
|
||||
const QString SETTINGS_DESCRIPTION_RELATIVE_PATH = "/resources/describe-settings.json";
|
||||
|
||||
const QString DESCRIPTION_SETTINGS_KEY = "settings";
|
||||
|
@ -190,12 +193,49 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& 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
|
||||
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) {
|
||||
const QVariant* foundValue = valueForKeyPath(_configMap.getMergedConfig(), keyPath);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <HTTPManager.h>
|
||||
|
||||
#include <ReceivedMessage.h>
|
||||
#include "AgentPermissions.h"
|
||||
|
||||
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 RESTRICTED_ACCESS_SETTINGS_KEYPATH = "security.restricted_access";
|
||||
const QString AGENT_PERMISSIONS_KEYPATH = "security.permissions";
|
||||
|
||||
class DomainServerSettingsManager : public QObject {
|
||||
Q_OBJECT
|
||||
|
@ -41,6 +43,8 @@ public:
|
|||
QVariantMap& getUserSettingsMap() { return _configMap.getUserConfig(); }
|
||||
QVariantMap& getSettingsMap() { return _configMap.getMergedConfig(); }
|
||||
|
||||
AgentPermissionsPointer getPermissionsForName(QString name) const;
|
||||
|
||||
private slots:
|
||||
void processSettingsRequestPacket(QSharedPointer<ReceivedMessage> message);
|
||||
|
||||
|
@ -58,6 +62,9 @@ private:
|
|||
HifiConfigVariantMap _configMap;
|
||||
|
||||
friend class DomainServer;
|
||||
|
||||
void unpackPermissions();
|
||||
QHash<QString, AgentPermissionsPointer> _agentPermissions;
|
||||
};
|
||||
|
||||
#endif // hifi_DomainServerSettingsManager_h
|
||||
|
|
Loading…
Reference in a new issue