From 75333ac058d8b1fc67821ba552ae99b416805fb6 Mon Sep 17 00:00:00 2001 From: Milan Tyagi Date: Fri, 5 Jun 2026 15:44:50 +0530 Subject: [PATCH 1/2] OF-1392 Add "No one can create a chat room" option to room creation permissions Add the muc.create.permission.no_one_created translation key. Update muc-create-permission.jsp to handle openPerms as a three-state option ("anyone", "specific", "none"). Introduce a third radio button for "No one can create a chat room". Adjust javascript/CSS visibility logic so that the allowed users/groups container is hidden when "No one" is selected. --- .../main/resources/openfire_i18n.properties | 1 + .../src/main/webapp/muc-create-permission.jsp | 40 ++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/i18n/src/main/resources/openfire_i18n.properties b/i18n/src/main/resources/openfire_i18n.properties index 49589d7535..1fca0e29d7 100644 --- a/i18n/src/main/resources/openfire_i18n.properties +++ b/i18n/src/main/resources/openfire_i18n.properties @@ -736,6 +736,7 @@ muc.create.permission.user_removed=User/Group removed successfully. muc.create.permission.policy=Permission Policy muc.create.permission.anyone_created=Anyone can create a chat room. muc.create.permission.specific_created=Only specific users/groups can create a chat room. +muc.create.permission.no_one_created=No one can create a chat room. muc.create.permission.allowed_users=Allowed Users/Groups muc.create.permission.add_jid=Add User (JID): muc.create.permission.add_group=Select Group (one or more): diff --git a/xmppserver/src/main/webapp/muc-create-permission.jsp b/xmppserver/src/main/webapp/muc-create-permission.jsp index c31b33f0dd..435e1b8b6a 100644 --- a/xmppserver/src/main/webapp/muc-create-permission.jsp +++ b/xmppserver/src/main/webapp/muc-create-permission.jsp @@ -45,7 +45,7 @@ boolean addsuccess = request.getParameter("addsuccess") != null; boolean deletesuccess = request.getParameter("deletesuccess") != null; boolean delete = ParamUtils.getBooleanParameter(request,"delete"); - boolean openPerms = ParamUtils.getBooleanParameter(request,"openPerms"); + String openPerms = ParamUtils.getParameter(request,"openPerms"); String mucname = ParamUtils.getParameter(request,"mucname"); if (!webManager.getMultiUserChatManager().isServiceRegistered(mucname)) { @@ -73,22 +73,34 @@ // Handle a save Map errors = new HashMap<>(); if (save) { - if (openPerms) { + if ("anyone".equals(openPerms)) { // Remove all users who have the ability to create rooms for (JID user : mucService.getUsersAllowedToCreate()) { mucService.removeUserAllowedToCreate(user); } mucService.setRoomCreationRestricted(false); // Log the event - webManager.logEvent("set MUC room creation to restricted for service "+mucname, null); + webManager.logEvent("set MUC room creation to not restricted for service "+mucname, null); + response.sendRedirect("muc-create-permission.jsp?success=true&mucname="+URLEncoder.encode(mucname, StandardCharsets.UTF_8)); + return; + } + else if ("none".equals(openPerms)) { + // Remove all users who have the ability to create rooms + for (JID user : mucService.getUsersAllowedToCreate()) { + mucService.removeUserAllowedToCreate(user); + } + mucService.setRoomCreationRestricted(true); + mucService.setAllRegisteredUsersAllowedToCreate(false); + // Log the event + webManager.logEvent("set MUC room creation to restricted (none) for service "+mucname, null); response.sendRedirect("muc-create-permission.jsp?success=true&mucname="+URLEncoder.encode(mucname, StandardCharsets.UTF_8)); return; } - else { + else if ("specific".equals(openPerms)) { mucService.setRoomCreationRestricted(true); mucService.setAllRegisteredUsersAllowedToCreate(allowAllRegisteredUsers); // Log the event - webManager.logEvent("set MUC room creation to not restricted for service "+mucname, null); + webManager.logEvent("set MUC room creation to restricted for service "+mucname, null); response.sendRedirect("muc-create-permission.jsp?success=true&mucname="+URLEncoder.encode(mucname, StandardCharsets.UTF_8)); return; } @@ -227,7 +239,7 @@ - > @@ -237,14 +249,24 @@ - > + <%= ((mucService.isRoomCreationRestricted() && (!mucService.getUsersAllowedToCreate().isEmpty() || mucService.isAllRegisteredUsersAllowedToCreate())) ? "checked" : "") %>> + + + > + + + + + @@ -254,7 +276,7 @@
-
"> +
">
From fdca48f6832980fd994bad0b0ffb8b3cab84dc05 Mon Sep 17 00:00:00 2001 From: Milan Tyagi Date: Fri, 5 Jun 2026 16:04:54 +0530 Subject: [PATCH 2/2] adding a error handling: when openperms is null --- xmppserver/src/main/webapp/muc-create-permission.jsp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xmppserver/src/main/webapp/muc-create-permission.jsp b/xmppserver/src/main/webapp/muc-create-permission.jsp index 435e1b8b6a..6ec9c8cb64 100644 --- a/xmppserver/src/main/webapp/muc-create-permission.jsp +++ b/xmppserver/src/main/webapp/muc-create-permission.jsp @@ -103,6 +103,8 @@ webManager.logEvent("set MUC room creation to restricted for service "+mucname, null); response.sendRedirect("muc-create-permission.jsp?success=true&mucname="+URLEncoder.encode(mucname, StandardCharsets.UTF_8)); return; + }else{ + errors.put("openPerms", "openPerms"); } }