Mercurial > prosody-modules
annotate mod_invites_adhoc/mod_invites_adhoc.lua @ 5486:71243bedb2b0
mod_s2sout_override: New module for overriding s2s connections
This takes advantage of the new event added in Prosody rev d5f322dd424b
which enables a cleaner way to override the connection using a resolver.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 24 May 2023 15:56:26 +0200 |
parents | f9cecbd03e11 |
children | 825c6fb76c48 |
rev | line source |
---|---|
4092
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; |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
5 local usermanager = require "core.usermanager"; |
4092
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 |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
16 -- These options are deprecated since module:may() |
5040
fa99279f9d40
mod_invites_adhoc: Set non-nil defaults for options, fixes traceback (thanks Martin)
Kim Alvefur <zash@zash.se>
parents:
5000
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:
5000
diff
changeset
|
18 local deny_user_invite_roles = module:get_option_set("deny_user_invites_by_roles", {}); |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
19 |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
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:
4767
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:
4767
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:
4767
diff
changeset
|
23 end |
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
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:
4767
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:
4767
diff
changeset
|
26 end |
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
27 end |
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
28 |
4092
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 |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
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:
4766
diff
changeset
|
54 -- that allow people to register accounts on this host. |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
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:
4767
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:
4767
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:
4767
diff
changeset
|
58 elseif usermanager.get_roles then -- COMPAT w/0.12 |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
59 local user_roles = usermanager.get_roles(jid, module.host); |
5483
f9cecbd03e11
mod_invites_adhoc: Fall back to generic allow_user_invites for role-less users
Matthew Wild <mwild1@gmail.com>
parents:
5040
diff
changeset
|
60 if not user_roles then |
f9cecbd03e11
mod_invites_adhoc: Fall back to generic allow_user_invites for role-less users
Matthew Wild <mwild1@gmail.com>
parents:
5040
diff
changeset
|
61 -- User has no roles we can check, just return default |
f9cecbd03e11
mod_invites_adhoc: Fall back to generic allow_user_invites for role-less users
Matthew Wild <mwild1@gmail.com>
parents:
5040
diff
changeset
|
62 return allow_user_invites; |
f9cecbd03e11
mod_invites_adhoc: Fall back to generic allow_user_invites for role-less users
Matthew Wild <mwild1@gmail.com>
parents:
5040
diff
changeset
|
63 end |
f9cecbd03e11
mod_invites_adhoc: Fall back to generic allow_user_invites for role-less users
Matthew Wild <mwild1@gmail.com>
parents:
5040
diff
changeset
|
64 |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
65 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:
4409
diff
changeset
|
66 return true; |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
67 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
68 if allow_user_invite_roles then |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
69 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:
4409
diff
changeset
|
70 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:
4409
diff
changeset
|
71 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:
4409
diff
changeset
|
72 end |
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
73 end |
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
74 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
75 if deny_user_invite_roles then |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
76 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:
4766
diff
changeset
|
77 if user_roles[denied_role] then |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
78 return false; |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
79 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
80 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
81 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
82 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:
4766
diff
changeset
|
83 return true; -- Admins may always create invitations |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
84 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
85 -- 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:
4766
diff
changeset
|
86 return allow_user_invites; |
4410
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
87 end |
d1230d32d709
mod_invites_adhoc: Add support for specifying roles that may invite users, admins may always invite
Matthew Wild <mwild1@gmail.com>
parents:
4409
diff
changeset
|
88 |
4092
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 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
|
90 |
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 -- 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
|
92 -- 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
|
93 -- 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
|
94 -- 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
|
95 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
|
96 function (_, data) |
4409
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
97 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:
4397
diff
changeset
|
98 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:
4397
diff
changeset
|
99 return { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
100 status = "completed"; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
101 error = { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
102 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:
4397
diff
changeset
|
103 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
104 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
105 end |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
106 local invite = invites.create_contact(username, may_invite_new_users(data.from, data), { |
4397
6e0aa163298f
mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents:
4395
diff
changeset
|
107 source = data.from |
6e0aa163298f
mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents:
4395
diff
changeset
|
108 }); |
4092
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 --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
|
110 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
|
111 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
|
112 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
|
113 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
|
114 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
|
115 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
|
116 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
|
117 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
|
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 }; |
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 }; |
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 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
|
122 |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 -- 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
|
124 -- 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
|
125 module:provides("adhoc", new_adhoc("Create new account invite", "urn:xmpp:invite#create-account", |
4395
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
126 function (_, data) |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
127 local invite = invites.create_account(nil, { |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
128 source = data.from |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
129 }); |
4092
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 --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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
140 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
141 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 end, "admin")); |