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': {