Mercurial > prosody-modules
annotate mod_muc_config_restrict/mod_muc_config_restrict.lua @ 5448:9d542e86e19a
mod_http_oauth2: Allow requesting a subset of scopes on token refresh
This enables clients to request access tokens with fewer permissions
than the grant they were given, reducing impact of token leak. Clients
could e.g. request access tokens with some privileges and immediately
revoke them after use, or other strategies.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 11 May 2023 21:40:09 +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); |