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);