Comparison

plugins/mod_admin_shell.lua @ 13542:67288253d9a2

mod_admin_shell: Reject attempt to add or remove roles for unrelated hosts The three-argument version seems to be a left-over from 0.12
author Kim Alvefur <zash@zash.se>
date Fri, 01 Nov 2024 13:10:45 +0100
parent 13540:cc67109ce502
child 13561:d8f7a8a26965
comparison
equal deleted inserted replaced
13541:3dc3781d02cd 13542:67288253d9a2
1783 if new_role == nil then host, new_role = userhost, host; end 1783 if new_role == nil then host, new_role = userhost, host; end
1784 if not prosody.hosts[host] then 1784 if not prosody.hosts[host] then
1785 return nil, "No such host: "..host; 1785 return nil, "No such host: "..host;
1786 elseif prosody.hosts[userhost] and not um.user_exists(username, userhost) then 1786 elseif prosody.hosts[userhost] and not um.user_exists(username, userhost) then
1787 return nil, "No such user"; 1787 return nil, "No such user";
1788 elseif userhost ~= host then
1789 return nil, "Can't add roles outside users own host"
1788 end 1790 end
1789 return um.add_user_secondary_role(username, host, new_role); 1791 return um.add_user_secondary_role(username, host, new_role);
1790 end 1792 end
1791 1793
1792 describe_command [[user:delrole(jid, host, role) - Remove a secondary role from a user]] 1794 describe_command [[user:delrole(jid, host, role) - Remove a secondary role from a user]]
1795 if role_name == nil then host, role_name = userhost, host; end 1797 if role_name == nil then host, role_name = userhost, host; end
1796 if not prosody.hosts[host] then 1798 if not prosody.hosts[host] then
1797 return nil, "No such host: "..host; 1799 return nil, "No such host: "..host;
1798 elseif prosody.hosts[userhost] and not um.user_exists(username, userhost) then 1800 elseif prosody.hosts[userhost] and not um.user_exists(username, userhost) then
1799 return nil, "No such user"; 1801 return nil, "No such user";
1802 elseif userhost ~= host then
1803 return nil, "Can't remove roles outside users own host"
1800 end 1804 end
1801 return um.remove_user_secondary_role(username, host, role_name); 1805 return um.remove_user_secondary_role(username, host, role_name);
1802 end 1806 end
1803 1807
1804 describe_command [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]] 1808 describe_command [[user:list(hostname, pattern) - List users on the specified host, optionally filtering with a pattern]]