From 267fce05059a8f9848bef084ad83bdc571977c04 Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Fri, 23 Jan 2026 19:38:58 +0100 Subject: [PATCH] fix: Prevent deactivated users from receiving socket events when possible --- server/api/helpers/config/update-main.js | 2 +- server/api/helpers/internal-config/update-main.js | 3 ++- server/api/helpers/projects/make-scoper.js | 2 +- .../helpers/users/{get-all-ids.js => get-all-active-ids.js} | 1 + server/api/helpers/users/make-scoper.js | 1 + server/api/hooks/query-methods/models/User.js | 3 ++- 6 files changed, 8 insertions(+), 4 deletions(-) rename server/api/helpers/users/{get-all-ids.js => get-all-active-ids.js} (93%) diff --git a/server/api/helpers/config/update-main.js b/server/api/helpers/config/update-main.js index db8d755e..63a42a9e 100644 --- a/server/api/helpers/config/update-main.js +++ b/server/api/helpers/config/update-main.js @@ -23,7 +23,7 @@ module.exports = { const config = await Config.qm.updateOneMain(values); - const configRelatedUserIds = await sails.helpers.users.getAllIds(User.Roles.ADMIN); + const configRelatedUserIds = await sails.helpers.users.getAllActiveIds(User.Roles.ADMIN); configRelatedUserIds.forEach((userId) => { sails.sockets.broadcast( diff --git a/server/api/helpers/internal-config/update-main.js b/server/api/helpers/internal-config/update-main.js index 8317aac4..34cd0be4 100644 --- a/server/api/helpers/internal-config/update-main.js +++ b/server/api/helpers/internal-config/update-main.js @@ -29,6 +29,7 @@ module.exports = { if (deactivatedUserIds && deactivatedUserIds.length > 0) { const users = await User.qm.getAll({ roleOrRoles: [User.Roles.ADMIN, User.Roles.PROJECT_OWNER], + isDeactivated: false, }); adminUserIds = users.flatMap((user) => { @@ -37,7 +38,7 @@ module.exports = { return user.role === User.Roles.ADMIN ? user.id : []; }); } else { - adminUserIds = await sails.helpers.users.getAllIds(User.Roles.ADMIN); + adminUserIds = await sails.helpers.users.getAllActiveIds(User.Roles.ADMIN); } adminUserIds.forEach((userId) => { diff --git a/server/api/helpers/projects/make-scoper.js b/server/api/helpers/projects/make-scoper.js index 4588918c..ed1e5fad 100644 --- a/server/api/helpers/projects/make-scoper.js +++ b/server/api/helpers/projects/make-scoper.js @@ -71,7 +71,7 @@ class Scoper { async getAdminUserIds() { if (!this.adminUserIds) { - this.adminUserIds = await sails.helpers.users.getAllIds(User.Roles.ADMIN); + this.adminUserIds = await sails.helpers.users.getAllActiveIds(User.Roles.ADMIN); } return this.adminUserIds; diff --git a/server/api/helpers/users/get-all-ids.js b/server/api/helpers/users/get-all-active-ids.js similarity index 93% rename from server/api/helpers/users/get-all-ids.js rename to server/api/helpers/users/get-all-active-ids.js index bcad7364..823c9158 100644 --- a/server/api/helpers/users/get-all-ids.js +++ b/server/api/helpers/users/get-all-active-ids.js @@ -14,6 +14,7 @@ module.exports = { async fn(inputs) { const users = await User.qm.getAll({ roleOrRoles: inputs.roleOrRoles, + isDeactivated: false, }); return sails.helpers.utils.mapRecords(users); diff --git a/server/api/helpers/users/make-scoper.js b/server/api/helpers/users/make-scoper.js index 73c2e2e5..32096dcc 100644 --- a/server/api/helpers/users/make-scoper.js +++ b/server/api/helpers/users/make-scoper.js @@ -28,6 +28,7 @@ class Scoper { if (!this.separatedUserIds) { const users = await User.qm.getAll({ roleOrRoles: [User.Roles.ADMIN, User.Roles.PROJECT_OWNER], + isDeactivated: false, }); const adminUserIds = []; diff --git a/server/api/hooks/query-methods/models/User.js b/server/api/hooks/query-methods/models/User.js index 839794f2..d90c0d45 100644 --- a/server/api/hooks/query-methods/models/User.js +++ b/server/api/hooks/query-methods/models/User.js @@ -60,8 +60,9 @@ const getByIds = (ids, { withDeactivated = true } = {}) => { return defaultFind(criteria); }; -const getAll = ({ roleOrRoles } = {}) => +const getAll = ({ roleOrRoles, isDeactivated } = {}) => defaultFind({ + isDeactivated, role: roleOrRoles, });