Fixed device access control when using ManageAllDeviceGroups.

This commit is contained in:
Ylian Saint-Hilaire 2020-05-06 11:47:23 -07:00
parent feb32745ed
commit cae876fd43
2 changed files with 14 additions and 1 deletions

View File

@ -1411,7 +1411,15 @@ function CreateMeshCentralServer(config, args) {
// Setup users that can see all device groups // Setup users that can see all device groups
obj.config.settings.managealldevicegroups = []; obj.config.settings.managealldevicegroups = [];
for (i in obj.config.domains) { if (Array.isArray(obj.config.domains[i].managealldevicegroups)) { for (var j in obj.config.domains[i].managealldevicegroups) { if (typeof obj.config.domains[i].managealldevicegroups[j] == 'string') { obj.config.settings.managealldevicegroups.push('user/' + i + '/' + obj.config.domains[i].managealldevicegroups[j]); } } } } for (i in obj.config.domains) {
if (Array.isArray(obj.config.domains[i].managealldevicegroups)) {
for (var j in obj.config.domains[i].managealldevicegroups) {
if (typeof obj.config.domains[i].managealldevicegroups[j] == 'string') {
obj.config.settings.managealldevicegroups.push('user/' + i + '/' + obj.config.domains[i].managealldevicegroups[j]);
}
}
}
}
}); });
}); });
}; };

View File

@ -4541,6 +4541,11 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
db.Get(nodeid, function (err, nodes) { db.Get(nodeid, function (err, nodes) {
if ((nodes == null) || (nodes.length != 1)) { func(null, 0, false); return; } // No such nodeid if ((nodes == null) || (nodes.length != 1)) { func(null, 0, false); return; } // No such nodeid
// This is a super user that can see all device groups for a given domain
if ((user.siteadmin == 0xFFFFFFFF) && (parent.config.settings.managealldevicegroups.indexOf(user._id) >= 0) && (nodes[0].domain == user.domain)) {
func(nodes[0], 0xFFFFFFFF, true); return;
}
// Check device link // Check device link
var rights = 0, visible = false, r = user.links[nodeid]; var rights = 0, visible = false, r = user.links[nodeid];
if (r != null) { if (r != null) {