mod_invites_adhoc: Add password reset command

To support cases where the admin does not have easy access to the
command line to generate a password reset invite for someone who forgot
their password.
This commit is contained in:
Kim Alvefur 2024-10-20 12:11:21 +02:00
parent bd90f33e28
commit a63544d6cf
2 changed files with 31 additions and 0 deletions

View file

@ -74,6 +74,7 @@ TRUNK
- Support for Type=notify and notify-reload systemd service type added
- Support for the roster *group* access_model in mod_pep
- Support for systemd socket activation in server_epoll
- mod_invites_adhoc gained a command for creating password resets
## Removed

View file

@ -2,6 +2,7 @@
local dataforms = require "prosody.util.dataforms";
local datetime = require "prosody.util.datetime";
local split_jid = require "prosody.util.jid".split;
local adhocutil = require "prosody.util.adhoc";
local new_adhoc = module:require("adhoc").new;
@ -98,3 +99,32 @@ module:provides("adhoc", new_adhoc("Create new account invite", "urn:xmpp:invite
};
};
end, "admin"));
local password_reset_form = dataforms.new({
title = "Generate Password Reset Invite";
{
name = "accountjid";
type = "jid-single";
required = true;
label = "The XMPP ID for the account to generate a password reset invite for";
};
});
module:provides("adhoc", new_adhoc("Create password reset invite", "xmpp:prosody.im/mod_invites_adhoc#password-reset",
adhocutil.new_simple_form(password_reset_form,
function (fields, err)
if err then return { status = "completed"; error = { message = "Fill in the form correctly" } }; end
local username = split_jid(fields.accountjid);
local invite = invites.create_account_reset(username);
return {
status = "completed";
result = {
layout = invite_result_form;
values = {
uri = invite.uri;
url = invite.landing_page;
expire = datetime.datetime(invite.expires);
};
};
};
end), "admin"));