Software /
code /
prosody
Diff
plugins/muc/persistent.lib.lua @ 12729:73a45ba6e3f1
muc: Re-allow non-admins to configure persistence (thanks Meaz)
Non-admins don't have a role on MUC services by default. Not even
prosody:user. This meant they had no :create-persistent-room permission, even
if muc_room_allow_persistent was true (the default).
Now we only check the role permissions if persistent room creation is
restricted, otherwise we skip any permission checks, just like previous
versions.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 28 Sep 2022 17:47:00 +0100 |
parent | 12642:9061f9621330 |
child | 12732:f731eda8a873 |
line wrap: on
line diff
--- a/plugins/muc/persistent.lib.lua Mon Sep 26 15:47:15 2022 +0100 +++ b/plugins/muc/persistent.lib.lua Wed Sep 28 17:47:00 2022 +0100 @@ -8,10 +8,7 @@ -- local restrict_persistent = not module:get_option_boolean("muc_room_allow_persistent", true); -module:default_permission( - restrict_persistent and "prosody:admin" or "prosody:user", - ":create-persistent-room" -); +module:default_permission("prosody:admin", ":create-persistent-room"); -- Admins can always create, by default local function get_persistent(room) return room._data.persistent; @@ -25,7 +22,7 @@ end module:hook("muc-config-form", function(event) - if not module:may(":create-persistent-room", event.actor) then + if restrict_persistent and not module:may(":create-persistent-room", event.actor) then -- Hide config option if this user is not allowed to create persistent rooms return; end @@ -39,7 +36,7 @@ end, 100-5); module:hook("muc-config-submitted/muc#roomconfig_persistentroom", function(event) - if not module:may(":create-persistent-room", event.actor) then + if restrict_persistent and not module:may(":create-persistent-room", event.actor) then return; -- Not allowed end if set_persistent(event.room, event.value) then