diff --git a/libraries/networking/src/NodePermissions.cpp b/libraries/networking/src/NodePermissions.cpp index fb74ccdc94..9f77dd9d21 100644 --- a/libraries/networking/src/NodePermissions.cpp +++ b/libraries/networking/src/NodePermissions.cpp @@ -22,6 +22,45 @@ QStringList NodePermissions::standardNames = QList() << NodePermissions::standardNameLoggedIn << NodePermissions::standardNameAnonymous; +NodePermissions::NodePermissions(QMap perms) { + _id = perms["permissions_id"].toString(); + if (perms.contains("group_id")) { + _groupIDSet = true; + _groupID = perms["group_id"].toUuid(); + } + + 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(); + canConnectPastMaxCapacity = perms["id_can_connect_past_max_capacity"].toBool(); +} + +QVariant NodePermissions::toVariant() { + QMap values; + values["permissions_id"] = _id; + if (_groupIDSet) { + values["group_id"] = _groupID; + } + values["id_can_connect"] = canConnectToDomain; + values["id_can_adjust_locks"] = canAdjustLocks; + values["id_can_rez"] = canRezPermanentEntities; + values["id_can_rez_tmp"] = canRezTemporaryEntities; + values["id_can_write_to_asset_server"] = canWriteToAssetServer; + values["id_can_connect_past_max_capacity"] = canConnectPastMaxCapacity; + return QVariant(values); +} + +void NodePermissions::setAll(bool value) { + canConnectToDomain = value; + canAdjustLocks = value; + canRezPermanentEntities = value; + canRezTemporaryEntities = value; + canWriteToAssetServer = value; + canConnectPastMaxCapacity = value; +} + NodePermissions& NodePermissions::operator|=(const NodePermissions& rhs) { this->canConnectToDomain |= rhs.canConnectToDomain; this->canAdjustLocks |= rhs.canAdjustLocks; @@ -44,7 +83,6 @@ NodePermissionsPointer& operator|=(NodePermissionsPointer& lhs, const NodePermis return lhs; } - QDataStream& operator<<(QDataStream& out, const NodePermissions& perms) { out << perms.canConnectToDomain; out << perms.canAdjustLocks; diff --git a/libraries/networking/src/NodePermissions.h b/libraries/networking/src/NodePermissions.h index c153878a7e..a18ccdf97d 100644 --- a/libraries/networking/src/NodePermissions.h +++ b/libraries/networking/src/NodePermissions.h @@ -25,15 +25,7 @@ class NodePermissions { public: NodePermissions() { _id = QUuid::createUuid().toString(); } NodePermissions(const QString& name) { _id = name; } - NodePermissions(QMap 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(); - canConnectPastMaxCapacity = perms["id_can_connect_past_max_capacity"].toBool(); - } + NodePermissions(QMap perms); QString getID() const { return _id; } @@ -41,6 +33,10 @@ public: void setUserName(QString userName) { _userName = userName; } QString getUserName() { return _userName; } + void setGroupID(QUuid groupID) { _groupID = groupID; } + QUuid getGroupID() { return _groupID; } + bool isGroup() { return _groupIDSet; } + bool isAssignment { false }; // these 3 names have special meaning. @@ -57,26 +53,9 @@ public: bool canWriteToAssetServer { false }; bool canConnectPastMaxCapacity { false }; - void setAll(bool value) { - canConnectToDomain = value; - canAdjustLocks = value; - canRezPermanentEntities = value; - canRezTemporaryEntities = value; - canWriteToAssetServer = value; - canConnectPastMaxCapacity = value; - } + QVariant toVariant(); - QVariant toVariant() { - QMap values; - values["permissions_id"] = _id; - values["id_can_connect"] = canConnectToDomain; - values["id_can_adjust_locks"] = canAdjustLocks; - values["id_can_rez"] = canRezPermanentEntities; - values["id_can_rez_tmp"] = canRezTemporaryEntities; - values["id_can_write_to_asset_server"] = canWriteToAssetServer; - values["id_can_connect_past_max_capacity"] = canConnectPastMaxCapacity; - return QVariant(values); - } + void setAll(bool value); NodePermissions& operator|=(const NodePermissions& rhs); NodePermissions& operator|=(const NodePermissionsPointer& rhs); @@ -86,6 +65,9 @@ public: protected: QString _id; QString _userName; + + bool _groupIDSet { false }; + QUuid _groupID; }; const NodePermissions DEFAULT_AGENT_PERMISSIONS;