diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index bdecb2ba..529077fd 100644 Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index 6b9f4bd9..91947c9e 100644 Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ diff --git a/agents/MeshService-signed.exe b/agents/MeshService-signed.exe index 805988dc..ab76e8ce 100644 Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ diff --git a/agents/MeshService.exe b/agents/MeshService.exe index 7166c07d..5bdd46e1 100644 Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ diff --git a/agents/MeshService64-signed.exe b/agents/MeshService64-signed.exe index 06254cbc..2acd083b 100644 Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ diff --git a/agents/MeshService64.exe b/agents/MeshService64.exe index bec875e1..07d2a284 100644 Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ diff --git a/meshuser.js b/meshuser.js index 9d117ad3..d19e3603 100644 --- a/meshuser.js +++ b/meshuser.js @@ -278,12 +278,18 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain) { } case 'events': { + // Setup the event filter + var filter = user.subscriptions; + if ((command.user != null) && ((user.siteadmin & 2) != 0)) { // SITERIGHT_MANAGEUSERS + // TODO: Add the meshes command.user has access to + filter = ['user/' + domain.id + '/' + command.user.toLowerCase()]; + } if ((command.limit == null) || (typeof command.limit != 'number')) { // Send the list of all events for this session - obj.db.GetEvents(user.subscriptions, domain.id, function (err, docs) { if (err != null) return; try { ws.send(JSON.stringify({ action: 'events', events: docs, tag: command.tag })); } catch (ex) { } }); + obj.db.GetEvents(filter, domain.id, function (err, docs) { if (err != null) return; try { ws.send(JSON.stringify({ action: 'events', events: docs, user: command.user, tag: command.tag })); } catch (ex) { } }); } else { // Send the list of most recent events for this session, up to 'limit' count - obj.db.GetEventsWithLimit(user.subscriptions, domain.id, command.limit, function (err, docs) { if (err != null) return; try { ws.send(JSON.stringify({ action: 'events', events: docs, tag: command.tag })); } catch (ex) { } }); + obj.db.GetEventsWithLimit(filter, domain.id, command.limit, function (err, docs) { if (err != null) return; try { ws.send(JSON.stringify({ action: 'events', events: docs, user: command.user, tag: command.tag })); } catch (ex) { } }); } break; } @@ -459,11 +465,24 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain) { } break; } + case 'changeuserpass': + { + // Change a user's password + if (user.siteadmin != 0xFFFFFFFF) break; + if (obj.common.validateString(command.user, 1, 256) == false) break; + if (obj.common.validateString(command.pass, 1, 256) == false) break; + var chguserid = 'user/' + domain.id + '/' + command.user.toLowerCase(), chguser = obj.parent.users[chguserid]; + if (chguser && chguser.salt) { + // Compute the password hash & save it + require('./pass').hash(command.pass, chguser.salt, function (err, hash) { if (!err) { chguser.hash = hash; obj.db.SetUser(chguser); } }); + } + break; + } case 'notifyuser': { // Send a notification message to a user if ((user.siteadmin & 2) == 0) break; - if (obj.common.validateString(command.userid, 1, 64) == false) break; // Meshname is between 1 and 64 characters + if (obj.common.validateString(command.userid, 1, 2048) == false) break; if (obj.common.validateString(command.msg, 1, 4096) == false) break; // Create the notification message diff --git a/package.json b/package.json index 643605de..11251218 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "0.1.6-j", + "version": "0.1.6-k", "keywords": [ "Remote Management", "Intel AMT", diff --git a/public/images/User-200.png b/public/images/User-200.png new file mode 100644 index 00000000..8eea9aa3 Binary files /dev/null and b/public/images/User-200.png differ diff --git a/public/images/User.png b/public/images/User.png new file mode 100644 index 00000000..9e5eeeb2 Binary files /dev/null and b/public/images/User.png differ diff --git a/views/default.handlebars b/views/default.handlebars index 7dcba268..2f9179f0 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -75,8 +75,8 @@