annotate mod_muc_config_restrict/mod_muc_config_restrict.lua @ 5608:1893ae742f66

mod_http_oauth2: Show errors on device flow user code entry page If the user enters the code incorrectly, having to click back to try again is no fun. Instead, show the error and the code entry form again.
author Kim Alvefur <zash@zash.se>
date Wed, 19 Jul 2023 13:05:47 +0200
parents ed7431fd3b47
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1014
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local is_admin = require "core.usermanager".is_admin;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local t_remove = table.remove;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local restricted_options = module:get_option_set("muc_config_restricted", {})._items;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 function handle_config_submit(event)
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 local stanza = event.stanza;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 if is_admin(stanza.attr.from, module.host) then return; end -- Don't restrict admins
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local fields = event.fields;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 for option in restricted_options do
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 fields[option] = nil; -- Like it was never there
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 end
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 end
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 function handle_config_request(event)
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if is_admin(event.actor, module.host) then return; end -- Don't restrict admins
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local form = event.form;
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 for i = #form, 1, -1 do
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 if restricted_options[form[i].name] then
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 t_remove(form, i);
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 end
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 module:hook("muc-config-submitted", handle_config_submit);
ed7431fd3b47 mod_muc_config_restrict: Allow restricting specific options in the MUC config form to service admins
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 module:hook("muc-config-form", handle_config_request);