mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 14:18:24 +02:00
better handling of missing settings keys
This commit is contained in:
parent
a4e4093a18
commit
d202a2bf11
2 changed files with 18 additions and 11 deletions
|
@ -266,15 +266,16 @@ void DomainServerSettingsManager::packPermissionsForMap(const QStringList& argum
|
||||||
QHash<QString, NodePermissionsPointer> agentPermissions,
|
QHash<QString, NodePermissionsPointer> agentPermissions,
|
||||||
QString keyPath) {
|
QString keyPath) {
|
||||||
QVariant* security = valueForKeyPath(_configMap.getUserConfig(), "security");
|
QVariant* security = valueForKeyPath(_configMap.getUserConfig(), "security");
|
||||||
|
if (!security || !security->canConvert(QMetaType::QVariantMap)) {
|
||||||
|
security = valueForKeyPath(_configMap.getUserConfig(), "security", true);
|
||||||
|
(*security) = QVariantMap();
|
||||||
|
}
|
||||||
|
|
||||||
// save settings for anonymous / logged-in / localhost
|
// save settings for anonymous / logged-in / localhost
|
||||||
QVariant* permissions = valueForKeyPath(_configMap.getUserConfig(), keyPath);
|
QVariant* permissions = valueForKeyPath(_configMap.getUserConfig(), keyPath);
|
||||||
if (!permissions || !permissions->canConvert(QMetaType::QVariantList)) {
|
if (!permissions || !permissions->canConvert(QMetaType::QVariantList)) {
|
||||||
QVariantMap securityMap = security->toMap();
|
permissions = valueForKeyPath(_configMap.getUserConfig(), keyPath, true);
|
||||||
QVariantList userList;
|
(*permissions) = QVariantList();
|
||||||
securityMap[mapName] = userList;
|
|
||||||
_configMap.getUserConfig()["security"] = securityMap;
|
|
||||||
permissions = valueForKeyPath(_configMap.getUserConfig(), keyPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantList* permissionsList = reinterpret_cast<QVariantList*>(permissions);
|
QVariantList* permissionsList = reinterpret_cast<QVariantList*>(permissions);
|
||||||
|
@ -306,12 +307,14 @@ void DomainServerSettingsManager::unpackPermissions(const QStringList& argumentL
|
||||||
QVariant* standardPermissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_STANDARD_PERMISSIONS_KEYPATH);
|
QVariant* standardPermissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_STANDARD_PERMISSIONS_KEYPATH);
|
||||||
if (!standardPermissions || !standardPermissions->canConvert(QMetaType::QVariantList)) {
|
if (!standardPermissions || !standardPermissions->canConvert(QMetaType::QVariantList)) {
|
||||||
qDebug() << "failed to extract standard permissions from settings.";
|
qDebug() << "failed to extract standard permissions from settings.";
|
||||||
return;
|
standardPermissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_STANDARD_PERMISSIONS_KEYPATH, true);
|
||||||
|
(*standardPermissions) = QVariantList();
|
||||||
}
|
}
|
||||||
QVariant* permissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_PERMISSIONS_KEYPATH);
|
QVariant* permissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_PERMISSIONS_KEYPATH);
|
||||||
if (!permissions || !permissions->canConvert(QMetaType::QVariantList)) {
|
if (!permissions || !permissions->canConvert(QMetaType::QVariantList)) {
|
||||||
qDebug() << "failed to extract permissions from settings.";
|
qDebug() << "failed to extract permissions from settings.";
|
||||||
return;
|
permissions = valueForKeyPath(_configMap.getUserConfig(), AGENT_PERMISSIONS_KEYPATH, true);
|
||||||
|
(*permissions) = QVariantList();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QVariant> standardPermissionsList = standardPermissions->toList();
|
QList<QVariant> standardPermissionsList = standardPermissions->toList();
|
||||||
|
@ -348,13 +351,16 @@ void DomainServerSettingsManager::unpackPermissions(const QStringList& argumentL
|
||||||
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameLocalhost) };
|
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameLocalhost) };
|
||||||
perms->setAll(true);
|
perms->setAll(true);
|
||||||
_standardAgentPermissions[perms->getID()] = perms;
|
_standardAgentPermissions[perms->getID()] = perms;
|
||||||
|
needPack = true;
|
||||||
}
|
}
|
||||||
if (!foundAnonymous) {
|
if (!foundAnonymous) {
|
||||||
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameAnonymous) };
|
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameAnonymous) };
|
||||||
|
_standardAgentPermissions[perms->getID()] = perms;
|
||||||
needPack = true;
|
needPack = true;
|
||||||
}
|
}
|
||||||
if (!foundLoggedIn) {
|
if (!foundLoggedIn) {
|
||||||
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameLoggedIn) };
|
NodePermissionsPointer perms { new NodePermissions(NodePermissions::standardNameLoggedIn) };
|
||||||
|
_standardAgentPermissions[perms->getID()] = perms;
|
||||||
needPack = true;
|
needPack = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,7 +368,6 @@ void DomainServerSettingsManager::unpackPermissions(const QStringList& argumentL
|
||||||
packPermissions(argumentList);
|
packPermissions(argumentList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef WANT_DEBUG
|
#ifdef WANT_DEBUG
|
||||||
qDebug() << "--------------- permissions ---------------------";
|
qDebug() << "--------------- permissions ---------------------";
|
||||||
QList<QHash<QString, NodePermissionsPointer>> permissionsSets;
|
QList<QHash<QString, NodePermissionsPointer>> permissionsSets;
|
||||||
|
|
|
@ -213,10 +213,12 @@ QVariant* valueForKeyPath(QVariantMap& variantMap, const QString& keyPath, bool
|
||||||
if (shouldCreateIfMissing || variantMap.contains(firstKey)) {
|
if (shouldCreateIfMissing || variantMap.contains(firstKey)) {
|
||||||
if (dotIndex == -1) {
|
if (dotIndex == -1) {
|
||||||
return &variantMap[firstKey];
|
return &variantMap[firstKey];
|
||||||
} else if (variantMap[firstKey].canConvert(QMetaType::QVariantMap)) {
|
|
||||||
return valueForKeyPath(*static_cast<QVariantMap*>(variantMap[firstKey].data()), keyPath.mid(dotIndex + 1),
|
|
||||||
shouldCreateIfMissing);
|
|
||||||
}
|
}
|
||||||
|
if (!variantMap[firstKey].canConvert(QMetaType::QVariantMap)) {
|
||||||
|
variantMap[firstKey] = QVariantMap();
|
||||||
|
}
|
||||||
|
return valueForKeyPath(*static_cast<QVariantMap*>(variantMap[firstKey].data()), keyPath.mid(dotIndex + 1),
|
||||||
|
shouldCreateIfMissing);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in a new issue