Software /
code /
prosody-modules
Annotate
mod_invites_adhoc/mod_invites_adhoc.lua @ 5160:8474a3b80200
mod_firewall: Fix 'is_admin' internal dependency rule #1797 (thanks diane)
Looks like the boolean logic was inverted here. Instead, for now,
simply check if is_admin is there. It is deprecated in trunk and was
briefly removed before being brought back with a 'deprecated' warning as
part of the new roles and permissions work. Making this dependency
conditioned on the existence of the underlying function should make it
work until it actually goes away for real.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 27 Jan 2023 23:06:25 +0100 |
parent | 5040:fa99279f9d40 |
child | 5483:f9cecbd03e11 |
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); |
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
|
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:
4409
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:
4409
diff
changeset
|
62 return true; |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
63 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
64 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
|
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:
4409
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:
4409
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:
4409
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:
4409
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:
4409
diff
changeset
|
70 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
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:
4766
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:
4766
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:
4766
diff
changeset
|
74 return false; |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
75 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
76 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
77 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
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:
4766
diff
changeset
|
79 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
|
80 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
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:
4766
diff
changeset
|
82 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
|
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:
4409
diff
changeset
|
84 |
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
|
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) |
4409
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
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:
4397
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:
4397
diff
changeset
|
95 return { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
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:
4397
diff
changeset
|
97 error = { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
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:
4397
diff
changeset
|
99 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
100 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
101 end |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
102 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
|
103 source = data.from |
6e0aa163298f
mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents:
4395
diff
changeset
|
104 }); |
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
|
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", |
4395
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
122 function (_, data) |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
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:
4092
diff
changeset
|
124 source = data.from |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
125 }); |
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
|
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")); |