Mercurial > prosody-modules
comparison mod_invites_adhoc/mod_invites_adhoc.lua @ 4767:ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 09 Nov 2021 11:39:18 +0000 |
| parents | abac64f71698 |
| children | 8b6fe33d1c9b |
comparison
equal
deleted
inserted
replaced
| 4766:abac64f71698 | 4767:ea93b204104e |
|---|---|
| 38 name = "expire"; | 38 name = "expire"; |
| 39 label = "Invite valid until"; | 39 label = "Invite valid until"; |
| 40 }, | 40 }, |
| 41 }); | 41 }); |
| 42 | 42 |
| 43 -- This is for checking if username (on the current host) | 43 -- This is for checking if the specified JID may create invites |
| 44 -- may create invites that allow people to register accounts | 44 -- that allow people to register accounts on this host. |
| 45 -- on this host. | |
| 46 local function may_invite_new_users(jid) | 45 local function may_invite_new_users(jid) |
| 47 if allow_user_invites then | |
| 48 return true; | |
| 49 end | |
| 50 if usermanager.get_roles then | 46 if usermanager.get_roles then |
| 51 local user_roles = usermanager.get_roles(jid, module.host); | 47 local user_roles = usermanager.get_roles(jid, module.host); |
| 52 if not user_roles then return; end | 48 if not user_roles then return; end |
| 53 if user_roles["prosody:admin"] then | 49 if user_roles["prosody:admin"] then |
| 54 return true; | 50 return true; |
| 55 elseif deny_user_invite_roles then | 51 end |
| 56 for denied_role in deny_user_invite_roles do | 52 if allow_user_invite_roles then |
| 57 if user_roles[denied_role] then | |
| 58 return false; | |
| 59 end | |
| 60 end | |
| 61 elseif allow_user_invite_roles then | |
| 62 for allowed_role in allow_user_invite_roles do | 53 for allowed_role in allow_user_invite_roles do |
| 63 if user_roles[allowed_role] then | 54 if user_roles[allowed_role] then |
| 64 return true; | 55 return true; |
| 65 end | 56 end |
| 66 end | 57 end |
| 67 end | 58 end |
| 68 elseif usermanager.is_admin(jid, module.host) then | 59 if deny_user_invite_roles then |
| 69 return true; | 60 for denied_role in deny_user_invite_roles do |
| 61 if user_roles[denied_role] then | |
| 62 return false; | |
| 63 end | |
| 64 end | |
| 65 end | |
| 66 elseif usermanager.is_admin(jid, module.host) then -- COMPAT w/0.11 | |
| 67 return true; -- Admins may always create invitations | |
| 70 end | 68 end |
| 71 return false; | 69 -- No role matches, so whatever the default is |
| 70 return allow_user_invites; | |
| 72 end | 71 end |
| 73 | 72 |
| 74 module:depends("adhoc"); | 73 module:depends("adhoc"); |
| 75 | 74 |
| 76 -- This command is available to all local users, even if allow_user_invites = false | 75 -- This command is available to all local users, even if allow_user_invites = false |
