user groups improvement.

This commit is contained in:
Ylian Saint-Hilaire 2020-01-06 11:22:54 -08:00
parent 481646aeae
commit 594acf9cbb
2 changed files with 13 additions and 4 deletions

View File

@ -269,6 +269,14 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
for (var i in ids) { if (ids[i].startsWith('user/')) { userTarget = true; } } for (var i in ids) { if (ids[i].startsWith('user/')) { userTarget = true; } }
if (userTarget == false) { ws.send(JSON.stringify({ action: 'event', event: event })); } if (userTarget == false) { ws.send(JSON.stringify({ action: 'event', event: event })); }
} }
} else if (event.ugrpid != null) {
if ((user.siteadmin & SITERIGHT_USERGROUPS) != 0) {
// If we have the rights to see users in a group, send the group as is.
ws.send(JSON.stringify({ action: 'event', event: event }));
} else {
// We don't have the rights to see user groups, remove the links.
ws.send(JSON.stringify({ action: 'event', event: { ugrpid: event.ugrpid, domain: event.domain, time: event.time, name: event.name, action: event.action, username: event.username, h: event.h } }));
}
} else { } else {
// This is not a device group event, we can get this event. // This is not a device group event, we can get this event.
ws.send(JSON.stringify({ action: 'event', event: event })); ws.send(JSON.stringify({ action: 'event', event: event }));
@ -2243,7 +2251,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
db.Set(common.escapeLinksFieldName(mesh)); db.Set(common.escapeLinksFieldName(mesh));
// Notify mesh change // Notify mesh change
var event = { etype: 'mesh', username: newuser.name, userid: command.userid, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Added user ' + newuser.name + ' to mesh ' + mesh.name, domain: domain.id }; var event = { etype: 'mesh', username: newuser.name, userid: user._id, meshid: mesh._id, name: mesh.name, mtype: mesh.mtype, desc: mesh.desc, action: 'meshchange', links: mesh.links, msg: 'Added user ' + newuser.name + ' to mesh ' + mesh.name, domain: domain.id };
if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come. if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the mesh. Another event will come.
parent.parent.DispatchEvent(['*', mesh._id, user._id, newuserid], obj, event); parent.parent.DispatchEvent(['*', mesh._id, user._id, newuserid], obj, event);
removedCount++; removedCount++;

View File

@ -2234,8 +2234,8 @@
} else { } else {
// This is an existing user group // This is an existing user group
ugroup.name = message.event.name; ugroup.name = message.event.name;
ugroup.desc = message.event.desc; if (message.event.desc) { ugroup.desc = message.event.desc; } else { delete ugroup.desc; }
ugroup.links = message.event.links; if (message.event.links) { ugroup.links = message.event.links; } else { delete ugroup.links; }
} }
masterUpdate(8192 + 16384); masterUpdate(8192 + 16384);
break; break;
@ -2279,7 +2279,7 @@
if (message.event.amt) { meshes[message.event.meshid].amt = message.event.amt; } if (message.event.amt) { meshes[message.event.meshid].amt = message.event.amt; }
// Check if we lost rights to this mesh in this change. // Check if we lost rights to this mesh in this change.
if (meshes[message.event.meshid].links[userinfo._id] == null) { if (IsMeshViewable(message.event.meshid) == false) {
if ((xxcurrentView == 20) && (currentMesh == meshes[message.event.meshid])) go(2); if ((xxcurrentView == 20) && (currentMesh == meshes[message.event.meshid])) go(2);
delete meshes[message.event.meshid]; delete meshes[message.event.meshid];
@ -2319,6 +2319,7 @@
// If we are looking at a node in the deleted mesh, move back to "My Devices" // If we are looking at a node in the deleted mesh, move back to "My Devices"
if (xxcurrentView >= 10 && xxcurrentView < 20 && currentNode && currentNode.meshid == message.event.meshid) { setDialogMode(0); go(1); } if (xxcurrentView >= 10 && xxcurrentView < 20 && currentNode && currentNode.meshid == message.event.meshid) { setDialogMode(0); go(1); }
console.log('deletemesh', meshes);
break; break;
} }
case 'addnode': { case 'addnode': {