Comparison

plugins/mod_invites_adhoc.lua @ 13527:dba43269db5e

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.
author Kim Alvefur <zash@zash.se>
date Sun, 20 Oct 2024 12:11:21 +0200
parent 13472:d5a9847b0e55
comparison
equal deleted inserted replaced
13526:3abed2ec7ab6 13527:dba43269db5e
1 -- XEP-0401: Easy User Onboarding 1 -- XEP-0401: Easy User Onboarding
2 local dataforms = require "prosody.util.dataforms"; 2 local dataforms = require "prosody.util.dataforms";
3 local datetime = require "prosody.util.datetime"; 3 local datetime = require "prosody.util.datetime";
4 local split_jid = require "prosody.util.jid".split; 4 local split_jid = require "prosody.util.jid".split;
5 local adhocutil = require "prosody.util.adhoc";
5 6
6 local new_adhoc = module:require("adhoc").new; 7 local new_adhoc = module:require("adhoc").new;
7 8
8 -- Whether local users can invite other users to create an account on this server 9 -- Whether local users can invite other users to create an account on this server
9 local allow_user_invites = module:get_option_boolean("allow_user_invites", false); 10 local allow_user_invites = module:get_option_boolean("allow_user_invites", false);
96 expire = datetime.datetime(invite.expires); 97 expire = datetime.datetime(invite.expires);
97 }; 98 };
98 }; 99 };
99 }; 100 };
100 end, "admin")); 101 end, "admin"));
102
103 local password_reset_form = dataforms.new({
104 title = "Generate Password Reset Invite";
105 {
106 name = "accountjid";
107 type = "jid-single";
108 required = true;
109 label = "The XMPP ID for the account to generate a password reset invite for";
110 };
111 });
112
113 module:provides("adhoc", new_adhoc("Create password reset invite", "xmpp:prosody.im/mod_invites_adhoc#password-reset",
114 adhocutil.new_simple_form(password_reset_form,
115 function (fields, err)
116 if err then return { status = "completed"; error = { message = "Fill in the form correctly" } }; end
117 local username = split_jid(fields.accountjid);
118 local invite = invites.create_account_reset(username);
119 return {
120 status = "completed";
121 result = {
122 layout = invite_result_form;
123 values = {
124 uri = invite.uri;
125 url = invite.landing_page;
126 expire = datetime.datetime(invite.expires);
127 };
128 };
129 };
130 end), "admin"));