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.
Josiah Baldwin committed
Nov 11, 2021 at 15:47 UTC
c50b3c0d262c0d91a510c6c58607a562461a3eeb
1 file changed
+3
-2
meshuser.js
+3
-2
@@ -2006,7 +2006,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2006
if (group != null) {
2007
if (group.links == null) { group.links = {}; }
2008
2009
- var unknownUsers = [], addedCount = 0, failCount = 0;
2009
+ var unknownUsers = [], addedCount = 0, failCount = 0, knownUsers;
2010
for (var i in command.usernames) {
2011
// Check if the user exists
2012
var chguserid = 'user/' + addUserDomain.id + '/' + command.usernames[i].toLowerCase();
@@ -2019,6 +2019,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2019
db.SetUser(chguser);
2020
parent.parent.DispatchEvent([chguser._id], obj, 'resubscribe');
2021
2022
+ knownUsers.push(chguser)
2023
// Notify user change
2024
var targets = ['*', 'server-users', user._id, chguser._id];
2025
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
2040
db.Set(group);
2041
2042
// Notify user group change
2042
- 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 };
2043
+ 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 };
2044
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.
2045
parent.parent.DispatchEvent(['*', group._id, user._id, chguserid], obj, event);
2046
}