Mercurial > prosody-modules
annotate mod_invites_adhoc/mod_invites_adhoc.lua @ 5648:c217f4edfc4f
misc/mtail: Start of an mtail config
Stashing it here in case anyone wants to continue working on it.
Currently it's only counting log messages by level.
Due to the permissions set by systemd on Prosody logs, mtail never
managed to start correctly until permissions were manually relaxed.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 17 Sep 2023 13:36:30 +0200 |
parents | 825c6fb76c48 |
children |
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 |
5582
825c6fb76c48
Multiple modules: Update for split prosody:user role (prosody 082c7d856e61)
Matthew Wild <mwild1@gmail.com>
parents:
5483
diff
changeset
|
22 if require "core.features".available:contains("split-user-roles") then |
825c6fb76c48
Multiple modules: Update for split prosody:user role (prosody 082c7d856e61)
Matthew Wild <mwild1@gmail.com>
parents:
5483
diff
changeset
|
23 module:default_permission("prosody:registered", ":invite-new-users"); |
825c6fb76c48
Multiple modules: Update for split prosody:user role (prosody 082c7d856e61)
Matthew Wild <mwild1@gmail.com>
parents:
5483
diff
changeset
|
24 else -- COMPAT |
825c6fb76c48
Multiple modules: Update for split prosody:user role (prosody 082c7d856e61)
Matthew Wild <mwild1@gmail.com>
parents:
5483
diff
changeset
|
25 module:default_permission("prosody:user", ":invite-new-users"); |
825c6fb76c48
Multiple modules: Update for split prosody:user role (prosody 082c7d856e61)
Matthew Wild <mwild1@gmail.com>
parents:
5483
diff
changeset
|
26 end |
5000
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 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
|
29 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
|
30 end |
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
31 end |
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
32 |
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
|
33 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
|
34 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
|
35 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
|
36 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
|
37 |
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 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
|
39 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
|
40 { |
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 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
|
42 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
|
43 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
|
44 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
|
45 }, |
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 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
|
48 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
|
49 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
|
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 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
|
53 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
|
54 }, |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 }); |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
57 -- 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
|
58 -- 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
|
59 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
|
60 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
|
61 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
|
62 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
|
63 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
|
64 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
|
65 -- 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
|
66 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
|
67 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
|
68 |
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 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
|
70 return true; |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
71 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
72 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
|
73 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
|
74 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
|
75 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
|
76 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
|
77 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
|
78 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
79 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
|
80 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
|
81 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
|
82 return false; |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
83 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
84 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
85 end |
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
86 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
|
87 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
|
88 end |
4767
ea93b204104e
mod_invites_adhoc: Allow role-based permissions to override default policy
Matthew Wild <mwild1@gmail.com>
parents:
4766
diff
changeset
|
89 -- 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
|
90 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
|
91 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
|
92 |
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
|
93 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
|
94 |
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 -- 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
|
96 -- 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
|
97 -- 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
|
98 -- 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
|
99 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
|
100 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
|
101 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
|
102 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
|
103 return { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
104 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
|
105 error = { |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
106 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
|
107 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
108 }; |
44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Matthew Wild <mwild1@gmail.com>
parents:
4397
diff
changeset
|
109 end |
5000
8b6fe33d1c9b
mod_invites_adhoc: Update for Prosody's new role API (backwards-compatible)
Matthew Wild <mwild1@gmail.com>
parents:
4767
diff
changeset
|
110 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
|
111 source = data.from |
6e0aa163298f
mod_invites_adhoc: also add tracking information to contact invites
Jonas Schäfer <jonas@wielicki.name>
parents:
4395
diff
changeset
|
112 }); |
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
|
113 --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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
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 }; |
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 }; |
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 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
|
126 |
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 -- 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
|
128 -- 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
|
129 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
|
130 function (_, data) |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
131 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
|
132 source = data.from |
df9bb3d861f9
mod_invites_adhoc: add information about who created an invitation
Jonas Schäfer <jonas@wielicki.name>
parents:
4092
diff
changeset
|
133 }); |
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
|
134 --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
|
135 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
|
136 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
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 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
|
143 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 }; |
2b6918714792
mod_invites_adhoc: New module to allow invite creation via ad-hoc commands (XEP-0401)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
146 end, "admin")); |