use constants rather than bare strings for standard psuedo-account-names

This commit is contained in:
Seth Alves 2016-06-04 09:07:34 -07:00
parent 4cad94216c
commit 09b0e3eaaf
4 changed files with 31 additions and 21 deletions

View file

@ -189,7 +189,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect
bool isLocalUser =
(senderHostAddress == limitedNodeList->getLocalSockAddr().getAddress() || senderHostAddress == QHostAddress::LocalHost);
if (isLocalUser) {
userPerms |= _server->_settingsManager.getPermissionsForName("localhost");
userPerms |= _server->_settingsManager.getPermissionsForName(AgentPermissions::standardNameLocalhost);
}
if (!username.isEmpty() && usernameSignature.isEmpty()) {
@ -204,7 +204,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect
if (username.isEmpty()) {
// they didn't tell us who they are
userPerms |= _server->_settingsManager.getPermissionsForName("anonymous");
userPerms |= _server->_settingsManager.getPermissionsForName(AgentPermissions::standardNameAnonymous);
} else if (verifyUserSignature(username, usernameSignature, nodeConnection.senderSockAddr)) {
// they are sent us a username and the signature verifies it
if (_server->_settingsManager.havePermissionsForName(username)) {
@ -212,7 +212,7 @@ SharedNodePointer DomainGatekeeper::processAgentConnectRequest(const NodeConnect
userPerms |= _server->_settingsManager.getPermissionsForName(username);
} else {
// they are logged into metaverse, but we don't have specific permissions for them.
userPerms |= _server->_settingsManager.getPermissionsForName("logged-in");
userPerms |= _server->_settingsManager.getPermissionsForName(AgentPermissions::standardNameLoggedIn);
}
} else {
// they sent us a username, but it didn't check out

View file

@ -206,15 +206,18 @@ void DomainServerSettingsManager::setupConfigMap(const QStringList& argumentList
QStringList allowedEditors = valueOrDefaultValueForKeyPath(ALLOWED_EDITORS_SETTINGS_KEYPATH).toStringList();
bool onlyEditorsAreRezzers = valueOrDefaultValueForKeyPath(EDITORS_ARE_REZZERS_KEYPATH).toBool();
_agentPermissions["localhost"].reset(new AgentPermissions("localhost"));
_agentPermissions["localhost"]->setAll(true);
_agentPermissions["anonymous"].reset(new AgentPermissions("anonymous"));
_agentPermissions["logged-in"].reset(new AgentPermissions("logged-in"));
_agentPermissions[AgentPermissions::standardNameLocalhost].reset(
new AgentPermissions(AgentPermissions::standardNameLocalhost));
_agentPermissions[AgentPermissions::standardNameLocalhost]->setAll(true);
_agentPermissions[AgentPermissions::standardNameAnonymous].reset(
new AgentPermissions(AgentPermissions::standardNameAnonymous));
_agentPermissions[AgentPermissions::standardNameLoggedIn].reset(
new AgentPermissions(AgentPermissions::standardNameLoggedIn));
if (isRestrictedAccess) {
// only users in allow-users list can connect
_agentPermissions["anonymous"]->canConnectToDomain = false;
_agentPermissions["logged-in"]->canConnectToDomain = false;
_agentPermissions[AgentPermissions::standardNameAnonymous]->canConnectToDomain = false;
_agentPermissions[AgentPermissions::standardNameLoggedIn]->canConnectToDomain = false;
} // else anonymous and logged-in retain default of canConnectToDomain = true
foreach (QString allowedUser, allowedUsers) {
@ -291,9 +294,9 @@ void DomainServerSettingsManager::unpackPermissions(const QStringList& argumentL
foreach (QVariant permsHash, permissionsList) {
AgentPermissionsPointer perms { new AgentPermissions(permsHash.toMap()) };
QString id = perms->getID();
foundLocalhost |= (id == "localhost");
foundAnonymous |= (id == "anonymous");
foundLoggedIn |= (id == "logged-in");
foundLocalhost |= (id == AgentPermissions::standardNameLocalhost);
foundAnonymous |= (id == AgentPermissions::standardNameAnonymous);
foundLoggedIn |= (id == AgentPermissions::standardNameLoggedIn);
if (_agentPermissions.contains(id)) {
qDebug() << "duplicate name in permissions table: " << id;
_agentPermissions[id] |= perms;
@ -304,20 +307,17 @@ void DomainServerSettingsManager::unpackPermissions(const QStringList& argumentL
// if any of the standard names are missing, add them
if (!foundLocalhost) {
AgentPermissionsPointer perms { new AgentPermissions("localhost") };
AgentPermissionsPointer perms { new AgentPermissions(AgentPermissions::standardNameLocalhost) };
perms->setAll(true);
_agentPermissions["localhost"] = perms;
// *permissionsList += perms->toVariant();
_agentPermissions[perms->getID()] = perms;
}
if (!foundAnonymous) {
AgentPermissionsPointer perms { new AgentPermissions("anonymous") };
_agentPermissions["anonymous"] = perms;
// *permissionsList += perms->toVariant();
AgentPermissionsPointer perms { new AgentPermissions(AgentPermissions::standardNameAnonymous) };
_agentPermissions[perms->getID()] = perms;
}
if (!foundLoggedIn) {
AgentPermissionsPointer perms { new AgentPermissions("logged-in") };
_agentPermissions["logged-in"] = perms;
// *permissionsList += perms->toVariant();
AgentPermissionsPointer perms { new AgentPermissions(AgentPermissions::standardNameLoggedIn) };
_agentPermissions[perms->getID()] = perms;
}
if (!foundLocalhost || !foundAnonymous || !foundLoggedIn) {
packPermissions(argumentList);

View file

@ -13,6 +13,11 @@
#include <QtCore/QDebug>
#include "AgentPermissions.h"
QString AgentPermissions::standardNameLocalhost = QString("localhost");
QString AgentPermissions::standardNameLoggedIn = QString("logged-in");
QString AgentPermissions::standardNameAnonymous = QString("anonymous");
AgentPermissions& AgentPermissions::operator|=(const AgentPermissions& rhs) {
this->canConnectToDomain |= rhs.canConnectToDomain;
this->canAdjustLocks |= rhs.canAdjustLocks;

View file

@ -37,6 +37,11 @@ public:
QString getID() const { return _id; }
// these 3 names have special meaning.
static QString standardNameLocalhost;
static QString standardNameLoggedIn;
static QString standardNameAnonymous;
// the initializations here should match the defaults in describe-settings.json
bool canConnectToDomain { true };
bool canAdjustLocks { false };