mod_invites_adhoc/mod_invites_adhoc.lua
author Matthew Wild <mwild1@gmail.com>
Sat, 24 Sep 2022 09:25:46 +0100
changeset 5062 39c2824c2880
parent 5044 fa99279f9d40
child 5487 f9cecbd03e11
permissions -rw-r--r--
mod_cloud_notify: README overhaul
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     1
-- XEP-0401: Easy User Onboarding
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     2
local dataforms = require "util.dataforms";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     3
local datetime = require "util.datetime";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     4
local split_jid = require "util.jid".split;
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
     5
local usermanager = require "core.usermanager";
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     6
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     7
local new_adhoc = module:require("adhoc").new;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     8
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
     9
-- Whether local users can invite other users to create an account on this server
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    10
local allow_user_invites = module:get_option_boolean("allow_user_invites", false);
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    11
-- Who can see and use the contact invite command. It is strongly recommended to
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    12
-- keep this available to all local users. To allow/disallow invite-registration
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    13
-- on the server, use the option above instead.
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    14
local allow_contact_invites = module:get_option_boolean("allow_contact_invites", true);
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    15
5004
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    16
-- These options are deprecated since module:may()
5044
fa99279f9d40 mod_invites_adhoc: Set non-nil defaults for options, fixes traceback (thanks Martin)
Kim Alvefur <zash@zash.se>
parents: 5004
diff changeset
    17
local allow_user_invite_roles = module:get_option_set("allow_user_invites_by_roles", {});
fa99279f9d40 mod_invites_adhoc: Set non-nil defaults for options, fixes traceback (thanks Martin)
Kim Alvefur <zash@zash.se>
parents: 5004
diff changeset
    18
local deny_user_invite_roles = module:get_option_set("deny_user_invites_by_roles", {});
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    19
5004
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    20
if module.may then
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    21
	if allow_user_invites then
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    22
		module:default_permission("prosody:user", ":invite-new-users");
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    23
	end
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    24
	if not allow_user_invite_roles:empty() or not deny_user_invite_roles:empty() then
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    25
		return error("allow_user_invites_by_roles and deny_user_invites_by_roles are deprecated options");
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    26
	end
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    27
end
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    28
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    29
local invites;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    30
if prosody.shutdown then -- COMPAT hack to detect prosodyctl
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    31
	invites = module:depends("invites");
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    32
end
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    33
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    34
local invite_result_form = dataforms.new({
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    35
		title = "Your invite has been created",
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    36
		{
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    37
			name = "url" ;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    38
			var = "landing-url";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    39
			label = "Invite web page";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    40
			desc = "Share this link";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    41
		},
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    42
		{
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    43
			name = "uri";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    44
			label = "Invite URI";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    45
			desc = "This alternative link can be opened with some XMPP clients";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    46
		},
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    47
		{
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    48
			name = "expire";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    49
			label = "Invite valid until";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    50
		},
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    51
	});
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    52
4771
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    53
-- This is for checking if the specified JID may create invites
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    54
-- that allow people to register accounts on this host.
5004
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    55
local function may_invite_new_users(jid, context)
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    56
	if module.may then
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    57
		return module:may(":invite-new-users", context);
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
    58
	elseif usermanager.get_roles then -- COMPAT w/0.12
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    59
		local user_roles = usermanager.get_roles(jid, module.host);
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    60
		if not user_roles then return; end
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    61
		if user_roles["prosody:admin"] then
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    62
			return true;
4771
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    63
		end
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    64
		if allow_user_invite_roles then
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    65
			for allowed_role in allow_user_invite_roles do
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    66
				if user_roles[allowed_role] then
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    67
					return true;
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    68
				end
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    69
			end
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    70
		end
4771
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    71
		if deny_user_invite_roles then
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    72
			for denied_role in deny_user_invite_roles do
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    73
				if user_roles[denied_role] then
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    74
					return false;
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    75
				end
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    76
			end
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    77
		end
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    78
	elseif usermanager.is_admin(jid, module.host) then -- COMPAT w/0.11
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    79
		return true; -- Admins may always create invitations
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    80
	end
4771
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    81
	-- No role matches, so whatever the default is
ea93b204104e mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents: 4770
diff changeset
    82
	return allow_user_invites;
4414
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    83
end
d1230d32d709 mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents: 4413
diff changeset
    84
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    85
module:depends("adhoc");
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    86
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    87
-- This command is available to all local users, even if allow_user_invites = false
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    88
-- If allow_user_invites is false, creating an invite still works, but the invite will
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    89
-- not be valid for registration on the current server, only for establishing a roster
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    90
-- subscription.
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    91
module:provides("adhoc", new_adhoc("Create new contact invite", "urn:xmpp:invite#invite",
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
    92
		function (_, data)
4413
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    93
			local username, host = split_jid(data.from);
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    94
			if host ~= module.host then
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    95
				return {
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    96
					status = "completed";
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    97
					error = {
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    98
						message = "This command is only available to users of "..module.host;
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
    99
					};
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
   100
				};
44f6537f6427 mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents: 4401
diff changeset
   101
			end
5004
8b6fe33d1c9b mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents: 4771
diff changeset
   102
			local invite = invites.create_contact(username, may_invite_new_users(data.from, data), {
4401
6e0aa163298f mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents: 4399
diff changeset
   103
				source = data.from
6e0aa163298f mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents: 4399
diff changeset
   104
			});
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   105
			--TODO: check errors
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   106
			return {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   107
				status = "completed";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   108
				form = {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   109
					layout = invite_result_form;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   110
					values = {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   111
						uri = invite.uri;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   112
						url = invite.landing_page;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   113
						expire = datetime.datetime(invite.expires);
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   114
					};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   115
				};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   116
			};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   117
		end, allow_contact_invites and "local_user" or "admin"));
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   118
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   119
-- This is an admin-only command that creates a new invitation suitable for registering
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   120
-- a new account. It does not add the new user to the admin's roster.
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   121
module:provides("adhoc", new_adhoc("Create new account invite", "urn:xmpp:invite#create-account",
4399
df9bb3d861f9 mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents: 4096
diff changeset
   122
		function (_, data)
df9bb3d861f9 mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents: 4096
diff changeset
   123
			local invite = invites.create_account(nil, {
df9bb3d861f9 mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents: 4096
diff changeset
   124
				source = data.from
df9bb3d861f9 mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents: 4096
diff changeset
   125
			});
4096
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   126
			--TODO: check errors
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   127
			return {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   128
				status = "completed";
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   129
				form = {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   130
					layout = invite_result_form;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   131
					values = {
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   132
						uri = invite.uri;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   133
						url = invite.landing_page;
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   134
						expire = datetime.datetime(invite.expires);
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   135
					};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   136
				};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   137
			};
2b6918714792 mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
   138
		end, "admin"));