aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mod_admin_shell.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-12-06 22:33:46 +0100
committerKim Alvefur <zash@zash.se>2021-12-06 22:33:46 +0100
commit9f2249b3dbdb86deae5d9ffde1a7a587dc02c4a1 (patch)
tree8902a6cea6c4b0194feb2af74c9f111c27a01a71 /plugins/mod_admin_shell.lua
parenta45484c1313e25faa7cad4bdc7cd71f1a459f2f4 (diff)
downloadprosody-9f2249b3dbdb86deae5d9ffde1a7a587dc02c4a1.tar.gz
prosody-9f2249b3dbdb86deae5d9ffde1a7a587dc02c4a1.zip
mod_admin_shell: Handle global roles (pass host=*)
Is it not odd that um.set_roles() takes `nil` to mean global?
Diffstat (limited to 'plugins/mod_admin_shell.lua')
-rw-r--r--plugins/mod_admin_shell.lua3
1 files changed, 2 insertions, 1 deletions
diff --git a/plugins/mod_admin_shell.lua b/plugins/mod_admin_shell.lua
index 98ddc7e3..526430db 100644
--- a/plugins/mod_admin_shell.lua
+++ b/plugins/mod_admin_shell.lua
@@ -1333,11 +1333,12 @@ end
function def_env.user:roles(jid, host, new_roles)
local username, userhost = jid_split(jid);
if new_roles == nil then host, new_roles = userhost, host; end
- if not prosody.hosts[host] then
+ if host ~= "*" and not prosody.hosts[host] then
return nil, "No such host: "..host;
elseif prosody.hosts[userhost] and not um.user_exists(username, userhost) then
return nil, "No such user";
end
+ if host == "*" then host = nil; end
return um.set_roles(jid, host, coerce_roles(new_roles));
end