Software /
code /
prosody
Comparison
plugins/mod_admin_adhoc.lua @ 12910:5c90862e39aa
mod_admin_adhoc: Add XEP-0133 commands to Disable and Re-Enable users
Enables UI in clients supporting XEP-0050
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 23 Feb 2023 18:39:02 +0100 |
parent | 11872:ffff0d8a9c68 |
child | 12977:74b9e05af71e |
comparison
equal
deleted
inserted
replaced
12909:ce508097b2c8 | 12910:5c90862e39aa |
---|---|
16 | 16 |
17 local keys = require "util.iterators".keys; | 17 local keys = require "util.iterators".keys; |
18 local usermanager_user_exists = require "core.usermanager".user_exists; | 18 local usermanager_user_exists = require "core.usermanager".user_exists; |
19 local usermanager_create_user = require "core.usermanager".create_user; | 19 local usermanager_create_user = require "core.usermanager".create_user; |
20 local usermanager_delete_user = require "core.usermanager".delete_user; | 20 local usermanager_delete_user = require "core.usermanager".delete_user; |
21 local usermanager_disable_user = require "core.usermanager".disable_user; | |
22 local usermanager_enable_user = require "core.usermanager".enable_user; | |
21 local usermanager_set_password = require "core.usermanager".set_password; | 23 local usermanager_set_password = require "core.usermanager".set_password; |
22 local hostmanager_activate = require "core.hostmanager".activate; | 24 local hostmanager_activate = require "core.hostmanager".activate; |
23 local hostmanager_deactivate = require "core.hostmanager".deactivate; | 25 local hostmanager_deactivate = require "core.hostmanager".deactivate; |
24 local rm_load_roster = require "core.rostermanager".load_roster; | 26 local rm_load_roster = require "core.rostermanager".load_roster; |
25 local st, jid = require "util.stanza", require "util.jid"; | 27 local st, jid = require "util.stanza", require "util.jid"; |
148 end | 150 end |
149 return {status = "completed", info = (#succeeded ~= 0 and | 151 return {status = "completed", info = (#succeeded ~= 0 and |
150 "The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "").. | 152 "The following accounts were successfully deleted:\n"..t_concat(succeeded, "\n").."\n" or "").. |
151 (#failed ~= 0 and | 153 (#failed ~= 0 and |
152 "The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") }; | 154 "The following accounts could not be deleted:\n"..t_concat(failed, "\n") or "") }; |
155 end); | |
156 | |
157 local disable_user_layout = dataforms_new{ | |
158 title = "Disabling a User"; | |
159 instructions = "Fill out this form to disable a user."; | |
160 | |
161 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; | |
162 { name = "accountjids", type = "jid-multi", required = true, label = "The Jabber ID(s) to disable" }; | |
163 }; | |
164 | |
165 local disable_user_command_handler = adhoc_simple(disable_user_layout, function(fields, err, data) | |
166 if err then | |
167 return generate_error_message(err); | |
168 end | |
169 local failed = {}; | |
170 local succeeded = {}; | |
171 for _, aJID in ipairs(fields.accountjids) do | |
172 local username, host = jid.split(aJID); | |
173 if (host == module_host) and usermanager_user_exists(username, host) and usermanager_disable_user(username, host) then | |
174 module:log("info", "User %s has been disabled by %s", aJID, jid.bare(data.from)); | |
175 succeeded[#succeeded+1] = aJID; | |
176 else | |
177 module:log("debug", "Tried to disable non-existent user %s", aJID); | |
178 failed[#failed+1] = aJID; | |
179 end | |
180 end | |
181 return {status = "completed", info = (#succeeded ~= 0 and | |
182 "The following accounts were successfully disabled:\n"..t_concat(succeeded, "\n").."\n" or "").. | |
183 (#failed ~= 0 and | |
184 "The following accounts could not be disabled:\n"..t_concat(failed, "\n") or "") }; | |
185 end); | |
186 | |
187 local enable_user_layout = dataforms_new{ | |
188 title = "Re-Enable a User"; | |
189 instructions = "Fill out this form to enable a user."; | |
190 | |
191 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/admin" }; | |
192 { name = "accountjids", type = "jid-multi", required = true, label = "The Jabber ID(s) to re-enable" }; | |
193 }; | |
194 | |
195 local enable_user_command_handler = adhoc_simple(enable_user_layout, function(fields, err, data) | |
196 if err then | |
197 return generate_error_message(err); | |
198 end | |
199 local failed = {}; | |
200 local succeeded = {}; | |
201 for _, aJID in ipairs(fields.accountjids) do | |
202 local username, host = jid.split(aJID); | |
203 if (host == module_host) and usermanager_user_exists(username, host) and usermanager_enable_user(username, host) then | |
204 module:log("info", "User %s has been enabled by %s", aJID, jid.bare(data.from)); | |
205 succeeded[#succeeded+1] = aJID; | |
206 else | |
207 module:log("debug", "Tried to enable non-existent user %s", aJID); | |
208 failed[#failed+1] = aJID; | |
209 end | |
210 end | |
211 return {status = "completed", info = (#succeeded ~= 0 and | |
212 "The following accounts were successfully enabled:\n"..t_concat(succeeded, "\n").."\n" or "").. | |
213 (#failed ~= 0 and | |
214 "The following accounts could not be enabled:\n"..t_concat(failed, "\n") or "") }; | |
153 end); | 215 end); |
154 | 216 |
155 -- Ending a user's session | 217 -- Ending a user's session |
156 local function disconnect_user(match_jid) | 218 local function disconnect_user(match_jid) |
157 local node, hostname, givenResource = jid.split(match_jid); | 219 local node, hostname, givenResource = jid.split(match_jid); |
802 | 864 |
803 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin"); | 865 local add_user_desc = adhoc_new("Add User", "http://jabber.org/protocol/admin#add-user", add_user_command_handler, "admin"); |
804 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); | 866 local change_user_password_desc = adhoc_new("Change User Password", "http://jabber.org/protocol/admin#change-user-password", change_user_password_command_handler, "admin"); |
805 local config_reload_desc = adhoc_new("Reload configuration", "http://prosody.im/protocol/config#reload", config_reload_handler, "global_admin"); | 867 local config_reload_desc = adhoc_new("Reload configuration", "http://prosody.im/protocol/config#reload", config_reload_handler, "global_admin"); |
806 local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin"); | 868 local delete_user_desc = adhoc_new("Delete User", "http://jabber.org/protocol/admin#delete-user", delete_user_command_handler, "admin"); |
869 local disable_user_desc = adhoc_new("Disable User", "http://jabber.org/protocol/admin#disable-user", disable_user_command_handler, "admin"); | |
870 local enable_user_desc = adhoc_new("Re-Enable User", "http://jabber.org/protocol/admin#reenable-user", enable_user_command_handler, "admin"); | |
807 local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin"); | 871 local end_user_session_desc = adhoc_new("End User Session", "http://jabber.org/protocol/admin#end-user-session", end_user_session_handler, "admin"); |
808 local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin"); | 872 local get_user_roster_desc = adhoc_new("Get User Roster","http://jabber.org/protocol/admin#get-user-roster", get_user_roster_handler, "admin"); |
809 local get_user_stats_desc = adhoc_new("Get User Statistics","http://jabber.org/protocol/admin#user-stats", get_user_stats_handler, "admin"); | 873 local get_user_stats_desc = adhoc_new("Get User Statistics","http://jabber.org/protocol/admin#user-stats", get_user_stats_handler, "admin"); |
810 local get_online_users_desc = adhoc_new("Get List of Online Users", "http://jabber.org/protocol/admin#get-online-users-list", get_online_users_command_handler, "admin"); | 874 local get_online_users_desc = adhoc_new("Get List of Online Users", "http://jabber.org/protocol/admin#get-online-users-list", get_online_users_command_handler, "admin"); |
811 local list_s2s_this_desc = adhoc_new("List S2S connections", "http://prosody.im/protocol/s2s#list", list_s2s_this_handler, "admin"); | 875 local list_s2s_this_desc = adhoc_new("List S2S connections", "http://prosody.im/protocol/s2s#list", list_s2s_this_handler, "admin"); |
822 | 886 |
823 module:provides("adhoc", add_user_desc); | 887 module:provides("adhoc", add_user_desc); |
824 module:provides("adhoc", change_user_password_desc); | 888 module:provides("adhoc", change_user_password_desc); |
825 module:provides("adhoc", config_reload_desc); | 889 module:provides("adhoc", config_reload_desc); |
826 module:provides("adhoc", delete_user_desc); | 890 module:provides("adhoc", delete_user_desc); |
891 module:provides("adhoc", disable_user_desc); | |
892 module:provides("adhoc", enable_user_desc); | |
827 module:provides("adhoc", end_user_session_desc); | 893 module:provides("adhoc", end_user_session_desc); |
828 module:provides("adhoc", get_user_roster_desc); | 894 module:provides("adhoc", get_user_roster_desc); |
829 module:provides("adhoc", get_user_stats_desc); | 895 module:provides("adhoc", get_user_stats_desc); |
830 module:provides("adhoc", get_online_users_desc); | 896 module:provides("adhoc", get_online_users_desc); |
831 module:provides("adhoc", list_s2s_this_desc); | 897 module:provides("adhoc", list_s2s_this_desc); |