user groups improvement.

Ylian Saint-Hilaire committed Jan 6, 2020 at 11:22 UTC 33a303ff822d55c571e1ebae1afac0ee3268901e
2 files changed +13 -4
meshuser.js
+9 -1
@@ -269,6 +269,14 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
269 for (var i in ids) { if (ids[i].startsWith('user/')) { userTarget = true; } }
270 if (userTarget == false) { ws.send(JSON.stringify({ action: 'event', event: event })); }
271 }
272 + } else if (event.ugrpid != null) {
273 + if ((user.siteadmin & SITERIGHT_USERGROUPS) != 0) {
274 + // If we have the rights to see users in a group, send the group as is.
275 + ws.send(JSON.stringify({ action: 'event', event: event }));
276 + } else {
277 + // We don't have the rights to see user groups, remove the links.
278 + 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 } }));
279 + }
280 } else {
281 // This is not a device group event, we can get this event.
282 ws.send(JSON.stringify({ action: 'event', event: event }));
@@ -2243,7 +2251,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2251 db.Set(common.escapeLinksFieldName(mesh));
2252
2253 // Notify mesh change
2246 - 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 };
2254 + 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 };
2255 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.
2256 parent.parent.DispatchEvent(['*', mesh._id, user._id, newuserid], obj, event);
2257 removedCount++;
views/default.handlebars
+4 -3
@@ -2234,8 +2234,8 @@
2234 } else {
2235 // This is an existing user group
2236 ugroup.name = message.event.name;
2237 - ugroup.desc = message.event.desc;
2238 - ugroup.links = message.event.links;
2237 + if (message.event.desc) { ugroup.desc = message.event.desc; } else { delete ugroup.desc; }
2238 + if (message.event.links) { ugroup.links = message.event.links; } else { delete ugroup.links; }
2239 }
2240 masterUpdate(8192 + 16384);
2241 break;
@@ -2279,7 +2279,7 @@
2279 if (message.event.amt) { meshes[message.event.meshid].amt = message.event.amt; }
2280
2281 // Check if we lost rights to this mesh in this change.
2282 - if (meshes[message.event.meshid].links[userinfo._id] == null) {
2282 + if (IsMeshViewable(message.event.meshid) == false) {
2283 if ((xxcurrentView == 20) && (currentMesh == meshes[message.event.meshid])) go(2);
2284 delete meshes[message.event.meshid];
2285
@@ -2319,6 +2319,7 @@
2319 // If we are looking at a node in the deleted mesh, move back to "My Devices"
2320 if (xxcurrentView >= 10 && xxcurrentView < 20 && currentNode && currentNode.meshid == message.event.meshid) { setDialogMode(0); go(1); }
2321
2322 + console.log('deletemesh', meshes);
2323 break;
2324 }
2325 case 'addnode': {