Mercurial > prosody-modules
annotate mod_muc_config_restrict/mod_muc_config_restrict.lua @ 5406:b86d80e21c60
mod_http_oauth2: Validate consistency of response and grant types
Ensure that these correlated fields make sense per RFC 7591 ยง 2.1, even
though we currently only check the response type during authorization.
This could probably all be deleted if (when!) we remove the implicit
grant, since then these things don't make any sense anymore.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 02 May 2023 16:34:31 +0200 |
parents | ed7431fd3b47 |
children |
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); |