This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new e795c60ff [OPENMEETINGS-2831] additional checks while performing room 
actions are added
e795c60ff is described below

commit e795c60ffa82dea55ad341f2ec4c6a66aece127b
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Aug 27 14:49:18 2026 +0700

    [OPENMEETINGS-2831] additional checks while performing room actions are 
added
---
 .../org/apache/openmeetings/web/app/ClientManager.java   |  8 ++++++++
 .../openmeetings/web/room/sidebar/RoomSidebar.java       | 16 +++++++---------
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index 959d987f3..d2ffa7235 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -140,6 +140,14 @@ public class ClientManager implements IClientManager {
                return uid == null ? null : onlineClients.get(uid);
        }
 
+       public Client getInRoom(String uid, Long roomId) {
+               if (uid == null || roomId == null) {
+                       return null;
+               }
+               Client c = onlineClients.get(uid);
+               return c != null && roomId.equals(c.getRoomId()) ? c : null;
+       }
+
        @Override
        public Client getBySid(String sid) {
                if (sid == null) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 309188915..4f8c573a7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -145,7 +145,7 @@ public class RoomSidebar extends Panel {
                        switch (a) {
                                case KICK:
                                        if (self.hasRight(Right.MODERATOR)) {
-                                               final Client kickedClient = 
cm.get(uid);
+                                               final Client kickedClient = 
cm.getInRoom(uid, room.getRoom().getId());
                                                if (kickedClient == null) {
                                                        return;
                                                }
@@ -155,7 +155,7 @@ public class RoomSidebar extends Panel {
                                        }
                                        break;
                                case MUTE_OTHERS:
-                                       if 
(room.getClient().hasRight(Right.MUTE_OTHERS)) {
+                                       if (self.hasRight(Right.MUTE_OTHERS) && 
cm.getInRoom(uid, room.getRoom().getId()) != null) {
                                                WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.MUTE_OTHERS, 
uid));
                                        }
                                        break;
@@ -173,7 +173,7 @@ public class RoomSidebar extends Panel {
        }
 
        private void muteRoomAction(String uid, Client self, JSONObject o) {
-               Client c = cm.get(uid);
+               Client c = cm.getInRoom(uid, room.getRoom().getId());
                if (c == null || !c.has(Client.Activity.AUDIO)) {
                        return;
                }
@@ -190,18 +190,16 @@ public class RoomSidebar extends Panel {
                try {
                        Right right = Right.valueOf(o.getString(PARAM_RIGHT));
                        if (self.hasRight(Right.MODERATOR)) {
-                               Client client = cm.get(uid);
+                               Client client = cm.getInRoom(uid, 
room.getRoom().getId());
                                if (client == null) {
                                        return;
                                }
                                if (client.hasRight(right)) {
                                        room.denyRight(client, right);
+                               } else if (Right.VIDEO == right) {
+                                       room.allowRight(client, Right.AUDIO, 
right);
                                } else {
-                                       if (Right.VIDEO == right) {
-                                               room.allowRight(client, 
Right.AUDIO, right);
-                                       } else {
-                                               room.allowRight(client, right);
-                                       }
+                                       room.allowRight(client, right);
                                }
                        } else {
                                room.requestRight(right, handler);

Reply via email to