Mercurial > prosody-modules
annotate mod_invites_page/mod_invites_page.lua @ 4409:44f6537f6427
mod_invites_adhoc: Fail contact invite if user is not on current host
Only the username was being used, and the host of the requester ignored.
Luckily this only affects admins of the host. If they want to create an
account they can use the other command. If they want to create a contact
they should request from their account on this host.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 28 Jan 2021 07:04:11 +0000 |
parents | 2c47b8110c48 |
children | 733e5513f691 |
rev | line source |
---|---|
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local st = require "util.stanza"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local url_escape = require "util.http".urlencode; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
4408
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
4 local base_url = "https://"..module.host.."/"; |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 local render_html_template = require"util.interpolation".new("%b{}", st.xml_escape, { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 urlescape = url_escape; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 lower = string.lower; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 classname = function (s) return (s:gsub("%W+", "-")); end; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 relurl = function (s) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 if s:match("^%w+://") then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 return s; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 return base_url.."/"..s; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 end; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 local render_url = require "util.interpolation".new("%b{}", url_escape, { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 urlescape = url_escape; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 noscheme = function (url) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 return (url:gsub("^[^:]+:", "")); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 end; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 local site_name = module:get_option_string("site_name", module.host); |
4408
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
25 local site_apps; |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 |
4402
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
27 -- Enable/disable built-in invite pages |
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
28 local external_only = module:get_option_boolean("invites_page_external", false); |
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
29 |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 local http_files; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 |
4408
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
32 if not external_only then |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
33 -- Load HTTP-serving dependencies |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
34 if prosody.shutdown then -- not if running under prosodyctl |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
35 module:depends("http"); |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
36 http_files = module:depends("http_files"); |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
37 end |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
38 -- Calculate automatic base_url default |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
39 base_url = module.http_url and module:http_url(); |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
40 |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
41 -- Load site apps info |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
42 module:depends("register_apps"); |
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
43 site_apps = module:shared("register_apps/apps"); |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 end |
4408
2c47b8110c48
mod_invites_page: Some fixes for external-only mode
Matthew Wild <mwild1@gmail.com>
parents:
4402
diff
changeset
|
45 |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 local invites = module:depends("invites"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 -- Point at eg https://github.com/ge0rg/easy-xmpp-invitation |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 -- This URL must always be absolute, as it is shared standalone |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 local invite_url_template = module:get_option_string("invites_page", base_url and (base_url.."?{invite.token}") or nil); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 -- This URL is relative to the invite page, or can be absolute |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 local register_url_template = module:get_option_string("invites_registration_page", "register?t={invite.token}&c={app.id}"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 local function add_landing_url(invite) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 if not invite_url_template then return; end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 -- TODO: we don't currently have a landing page for subscription-only invites, |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 -- so the user will only receive a URI. The client should be able to handle this |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 -- by automatically falling back to a client-specific landing page, per XEP-0401. |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 if not invite.allow_registration then return; end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 invite.landing_page = render_url(invite_url_template, { host = module.host, invite = invite }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 module:hook("invite-created", add_landing_url); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 |
4402
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
65 if external_only then |
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
66 return; |
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
67 end |
85c11eb4331b
mod_invites_page: Allow disabling of built-in pages with invites_page_external option
Matthew Wild <mwild1@gmail.com>
parents:
4129
diff
changeset
|
68 |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 local function render_app_urls(apps, invite_vars) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 local rendered_apps = {}; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 for _, unrendered_app in ipairs(apps) do |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 local app = setmetatable({}, { __index = unrendered_app }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 local template_vars = { app = app, invite = invite_vars, base_url = base_url }; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 if app.magic_link_format then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 -- Magic link generally links directly to third-party |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 app.proceed_url = render_url(app.magic_link_format or app.link or "#", template_vars); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 elseif app.supports_preauth_uri then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 -- Proceed to a page that guides the user to download, and then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 -- click the URI button |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 app.proceed_url = render_url("{base_url!}/setup/{app.id}?{invite.token}", template_vars); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 else |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 -- Manual means proceed to web registration, but include app id |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 -- so it can show post-registration instructions |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 app.proceed_url = render_url(register_url_template, template_vars); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
85 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 table.insert(rendered_apps, app); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
87 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
88 return rendered_apps; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
89 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
90 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
91 function serve_invite_page(event) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
92 local invite_page_template = assert(module:load_resource("html/invite.html")):read("*a"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
93 local invalid_invite_page_template = assert(module:load_resource("html/invite_invalid.html")):read("*a"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
94 |
4129
ca099bd28bf5
mod_invites_page, mod_invites_register_web: Set correct Content-Type everywhere necessary
Matthew Wild <mwild1@gmail.com>
parents:
4116
diff
changeset
|
95 event.response.headers["Content-Type"] = "text/html; charset=utf-8"; |
ca099bd28bf5
mod_invites_page, mod_invites_register_web: Set correct Content-Type everywhere necessary
Matthew Wild <mwild1@gmail.com>
parents:
4116
diff
changeset
|
96 |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
97 local invite = invites.get(event.request.url.query); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
98 if not invite then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
99 return render_html_template(invalid_invite_page_template, { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
100 site_name = site_name; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
101 static = base_url.."/static"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
102 }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
103 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
104 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
105 local template_vars = { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
106 site_name = site_name; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
107 token = invite.token; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
108 uri = invite.uri; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
109 type = invite.type; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
110 jid = invite.jid; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
111 inviter = invite.inviter; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
112 static = base_url.."/static"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
113 }; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
114 template_vars.apps = render_app_urls(site_apps, template_vars); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
115 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
116 local invite_page = render_html_template(invite_page_template, template_vars); |
4116
05d0a249326a
mod_invites_page: Add Link header for URI with rel=alternate
Matthew Wild <mwild1@gmail.com>
parents:
4107
diff
changeset
|
117 |
05d0a249326a
mod_invites_page: Add Link header for URI with rel=alternate
Matthew Wild <mwild1@gmail.com>
parents:
4107
diff
changeset
|
118 event.response.headers["Link"] = ([[<%s>; rel="alternate"]]):format(template_vars.uri); |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
119 return invite_page; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
120 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
121 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
122 function serve_setup_page(event, app_id) |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
123 local invite_page_template = assert(module:load_resource("html/client.html")):read("*a"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
124 local invalid_invite_page_template = assert(module:load_resource("html/invite_invalid.html")):read("*a"); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
125 |
4129
ca099bd28bf5
mod_invites_page, mod_invites_register_web: Set correct Content-Type everywhere necessary
Matthew Wild <mwild1@gmail.com>
parents:
4116
diff
changeset
|
126 event.response.headers["Content-Type"] = "text/html; charset=utf-8"; |
ca099bd28bf5
mod_invites_page, mod_invites_register_web: Set correct Content-Type everywhere necessary
Matthew Wild <mwild1@gmail.com>
parents:
4116
diff
changeset
|
127 |
4094
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
128 local invite = invites.get(event.request.url.query); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
129 if not invite then |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
130 return render_html_template(invalid_invite_page_template, { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
131 site_name = site_name; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
132 static = base_url.."/static"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
133 }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
134 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
135 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
136 local template_vars = { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
137 site_name = site_name; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
138 apps = site_apps; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
139 token = invite.token; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
140 uri = invite.uri; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
141 type = invite.type; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
142 jid = invite.jid; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
143 static = base_url.."/static"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
144 }; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
145 template_vars.app = render_app_urls({ site_apps[app_id] }, template_vars)[1]; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
146 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
147 local invite_page = render_html_template(invite_page_template, template_vars); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
148 return invite_page; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
149 end |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
150 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
151 local mime_map = { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
152 png = "image/png"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
153 svg = "image/svg+xml"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
154 js = "application/javascript"; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
155 }; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
156 |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
157 module:provides("http", { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
158 route = { |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
159 ["GET"] = serve_invite_page; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
160 ["GET /setup/*"] = serve_setup_page; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
161 ["GET /static/*"] = http_files and http_files.serve({ path = module:get_directory().."/static", mime_map = mime_map }); |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
162 }; |
dd00a2b9927c
mod_invites_page: New module to generate landing page for invites
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
163 }); |