Comparison

plugins/muc/hidden.lib.lua @ 12802:4a8740e01813

Merge 0.12->trunk
author Kim Alvefur <zash@zash.se>
date Mon, 12 Dec 2022 07:10:54 +0100
parent 12642:9061f9621330
child 13170:082c7d856e61
comparison
equal deleted inserted replaced
12801:ebd6b4d8bf04 12802:4a8740e01813
6 -- This project is MIT/X11 licensed. Please see the 6 -- This project is MIT/X11 licensed. Please see the
7 -- COPYING file in the source package for more information. 7 -- COPYING file in the source package for more information.
8 -- 8 --
9 9
10 local restrict_public = not module:get_option_boolean("muc_room_allow_public", true); 10 local restrict_public = not module:get_option_boolean("muc_room_allow_public", true);
11 local um_is_admin = require "core.usermanager".is_admin; 11 module:default_permission(restrict_public and "prosody:admin" or "prosody:user", ":create-public-room");
12 12
13 local function get_hidden(room) 13 local function get_hidden(room)
14 return room._data.hidden; 14 return room._data.hidden;
15 end 15 end
16 16
20 room._data.hidden = hidden; 20 room._data.hidden = hidden;
21 return true; 21 return true;
22 end 22 end
23 23
24 module:hook("muc-config-form", function(event) 24 module:hook("muc-config-form", function(event)
25 if restrict_public and not um_is_admin(event.actor, module.host) then 25 if not module:may(":create-public-room", event.actor) then
26 -- Don't show option if public rooms are restricted and user is not admin of this host 26 -- Hide config option if this user is not allowed to create public rooms
27 return; 27 return;
28 end 28 end
29 table.insert(event.form, { 29 table.insert(event.form, {
30 name = "muc#roomconfig_publicroom"; 30 name = "muc#roomconfig_publicroom";
31 type = "boolean"; 31 type = "boolean";
34 value = not get_hidden(event.room); 34 value = not get_hidden(event.room);
35 }); 35 });
36 end, 100-9); 36 end, 100-9);
37 37
38 module:hook("muc-config-submitted/muc#roomconfig_publicroom", function(event) 38 module:hook("muc-config-submitted/muc#roomconfig_publicroom", function(event)
39 if restrict_public and not um_is_admin(event.actor, module.host) then 39 if not module:may(":create-public-room", event.actor) then
40 return; -- Not allowed 40 return; -- Not allowed
41 end 41 end
42 if set_hidden(event.room, not event.value) then 42 if set_hidden(event.room, not event.value) then
43 event.status_codes["104"] = true; 43 event.status_codes["104"] = true;
44 end 44 end