--- a/mod_adhoc_account_management/mod_adhoc_account_management.lua Sun Dec 23 17:11:10 2018 +0100
+++ b/mod_adhoc_account_management/mod_adhoc_account_management.lua Sun Dec 23 18:33:32 2018 +0100
@@ -45,59 +45,59 @@
function change_password_command_handler(self, data, state)
if not state then -- New session, send the form
return { status = "executing", actions = { "complete" }, form = change_password_layout }, true;
- else
- if data.action == "cancel" then
- return { status = "canceled" };
- end
+ end
+
+ if data.action == "cancel" then
+ return { status = "canceled" };
+ end
- -- Who are we talking to?
- local username, hostname = jid_split(data.from);
- if not username or hostname ~= module.host then
- return { status = "error", error = { type = "cancel",
- condition = "forbidden", message = "Invalid user or hostname." } };
- end
+ -- Who are we talking to?
+ local username, hostname = jid_split(data.from);
+ if not username or hostname ~= module.host then
+ return { status = "error", error = { type = "cancel",
+ condition = "forbidden", message = "Invalid user or hostname." } };
+ end
+
+ -- Extract data from the form
+ local fields = change_password_layout:data(data.form);
- -- Extract data from the form
- local fields = change_password_layout:data(data.form);
+ -- Validate
+ if require_current then
+ if not fields["password-current"] or #fields["password-current"] == 0 then
+ return { status = "error", error = { type = "modify",
+ condition = "bad-request", message = "Please enter your current password" } };
+ elseif not usermanager_test_password(username, hostname, fields["password-current"]) then
+ return { status = "error", error = { type = "modify",
+ condition = "bad-request", message = "Your current password was incorrect" } };
+ end
+ end
- -- Validate
- if require_current then
- if not fields["password-current"] or #fields["password-current"] == 0 then
- return { status = "error", error = { type = "modify",
- condition = "bad-request", message = "Please enter your current password" } };
- elseif not usermanager_test_password(username, hostname, fields["password-current"]) then
- return { status = "error", error = { type = "modify",
- condition = "bad-request", message = "Your current password was incorrect" } };
+ if require_confirm and fields["password-confirm"] ~= fields["password"] then
+ return { status = "error", error = { type = "modify",
+ condition = "bad-request", message = "New password didn't match the confirmation" } };
+ end
+
+ if not fields.password or #fields.password == 0 then
+ return { status = "error", error = { type = "modify",
+ condition = "bad-request", message = "Please enter a new password" } };
+ end
+
+ -- All is good, so change password.
+ module:log("debug", "About to usermanager.set_password(%q, password, %q)", username, hostname);
+ local ok, err = usermanager_set_password(username, fields.password, hostname);
+ if ok then
+ if close_others then
+ for _, sess in pairs(hosts[hostname].sessions[username].sessions) do
+ if sess.full_jid ~= data.from then
+ sess:close{ condition = "reset", text = "Password changed" }
+ end
end
end
-
- if require_confirm and fields["password-confirm"] ~= fields["password"] then
- return { status = "error", error = { type = "modify",
- condition = "bad-request", message = "New password didn't match the confirmation" } };
- end
-
- if not fields.password or #fields.password == 0 then
- return { status = "error", error = { type = "modify",
- condition = "bad-request", message = "Please enter a new password" } };
- end
-
- -- All is good, so change password.
- module:log("debug", "About to usermanager.set_password(%q, password, %q)", username, hostname);
- local ok, err = usermanager_set_password(username, fields.password, hostname);
- if ok then
- if close_others then
- for _, sess in pairs(hosts[hostname].sessions[username].sessions) do
- if sess.full_jid ~= data.from then
- sess:close{ condition = "reset", text = "Password changed" }
- end
- end
- end
- return { status = "completed", info = "Password successfully changed" };
- else
- module:log("warn", "%s@%s could not change password: %s", username, hostname, tostring(err));
- return { status = "error", error = { type = "cancel",
- condition = "internal-server-error", message = "Could not save new password: "..tostring(err) } };
- end
+ return { status = "completed", info = "Password successfully changed" };
+ else
+ module:log("warn", "%s@%s could not change password: %s", username, hostname, tostring(err));
+ return { status = "error", error = { type = "cancel",
+ condition = "internal-server-error", message = "Could not save new password: "..tostring(err) } };
end
end