From c50b3c0d262c0d91a510c6c58607a562461a3eeb Mon Sep 17 00:00:00 2001 From: Josiah Baldwin Date: Thu, 11 Nov 2021 15:47:04 -0800 Subject: [PATCH 1/2] Fix bug in addusertousergroup Fix obscure bug when the last user added in list of addusertousergroup was an unknown user causing the server to crash. Also updated the group update message of same to display all users added, rather than only the last one in the list. --- meshuser.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/meshuser.js b/meshuser.js index 4cbc4e3d..fc4b0ebd 100644 --- a/meshuser.js +++ b/meshuser.js @@ -2006,7 +2006,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use if (group != null) { if (group.links == null) { group.links = {}; } - var unknownUsers = [], addedCount = 0, failCount = 0; + var unknownUsers = [], addedCount = 0, failCount = 0, knownUsers; for (var i in command.usernames) { // Check if the user exists var chguserid = 'user/' + addUserDomain.id + '/' + command.usernames[i].toLowerCase(); @@ -2019,6 +2019,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use db.SetUser(chguser); parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe'); + knownUsers.push(chguser) // Notify user change var targets = ['*', 'server-users', user._id, chguser._id]; var event = { etype: 'user', userid: user._id, username: user.name, account: parent.CloneSafeUser(chguser), action: 'accountchange', msgid: 67, msgArgs: [chguser.name], msg: 'User group membership changed: ' + chguser.name, domain: addUserDomain.id }; @@ -2039,7 +2040,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use db.Set(group); // Notify user group change - var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msgid: 71, msgArgs: [chguser.name, group.name], msg: 'Added user ' + chguser.name + ' to user group ' + group.name, addUserDomain: domain.id }; + var event = { etype: 'ugrp', userid: user._id, username: user.name, ugrpid: group._id, name: group.name, desc: group.desc, action: 'usergroupchange', links: group.links, msgid: 71, msgArgs: [knownUsers.map((u)=>u.name), group.name], msg: 'Added user(s) ' + knownUsers.map((u)=>u.name) + ' to user group ' + group.name, addUserDomain: domain.id }; if (db.changeStream) { event.noact = 1; } // If DB change stream is active, don't use this event to change the user group. Another event will come. parent.parent.DispatchEvent(['*', group._id, user._id, chguserid], obj, event); } From d3f115b3a2d228c900f5b5a8ba586415bc517a9a Mon Sep 17 00:00:00 2001 From: Josiah Baldwin Date: Mon, 15 Nov 2021 12:06:14 -0800 Subject: [PATCH 2/2] Fixed missing initialization of new variable. --- meshuser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meshuser.js b/meshuser.js index fc4b0ebd..9b13cbd5 100644 --- a/meshuser.js +++ b/meshuser.js @@ -2006,7 +2006,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use if (group != null) { if (group.links == null) { group.links = {}; } - var unknownUsers = [], addedCount = 0, failCount = 0, knownUsers; + var unknownUsers = [], addedCount = 0, failCount = 0, knownUsers = []; for (var i in command.usernames) { // Check if the user exists var chguserid = 'user/' + addUserDomain.id + '/' + command.usernames[i].toLowerCase();