mod_invites_register_web: Support linking to a web chat after successful registration
--- a/mod_invites_register_web/README.markdown Thu Oct 01 17:51:32 2020 +0200
+++ b/mod_invites_register_web/README.markdown Mon Oct 05 16:45:06 2020 +0100
@@ -37,6 +37,10 @@
There is no specific configuration for this module (though it uses the
optional `site_name` to override the displayed site name.
+You may also set `webchat_url` to the URL of a web chat that will be linked
+to after successful registration. If not specified but mod_conversejs is loaded
+on the current host, it will default to the URL of that module.
+
This module depends on mod_invites_page solely for the case where an invalid
invite token is received - it will redirect to mod_invites_page so that an
appropriate error can be served to the user.
--- a/mod_invites_register_web/html/register_success.html Thu Oct 01 17:51:32 2020 +0200
+++ b/mod_invites_register_web/html/register_success.html Mon Oct 05 16:45:06 2020 +0100
@@ -45,6 +45,16 @@
<p>To start chatting, you need to enter your new account
credentials into your chosen XMPP software.</p>
+ {webchat_url&
+ <div class="alert alert-success">
+ <p>You can also use our online web chat to get started
+ right away.
+ </p>
+ <a class="btn btn-primary" href="{webchat_url}">Log in via web</a>
+ </div>
+ }
+
+
<p>As a final reminder, your account details are shown below:</p>
<form class="account-details col-12 col-lg-6 mx-auto">
--- a/mod_invites_register_web/mod_invites_register_web.lua Thu Oct 01 17:51:32 2020 +0200
+++ b/mod_invites_register_web/mod_invites_register_web.lua Mon Oct 05 16:45:06 2020 +0100
@@ -1,6 +1,7 @@
local id = require "util.id";
local http_formdecode = require "net.http".formdecode;
local usermanager = require "core.usermanager";
+local modulemanager = require "core.modulemanager";
local nodeprep = require "util.encodings".stringprep.nodeprep;
local st = require "util.stanza";
local url_escape = require "util.http".urlencode;
@@ -14,6 +15,14 @@
local site_name = module:get_option_string("site_name", module.host);
local site_apps = module:shared("register_apps/apps");
+local webchat_url = module:get_option_string("webchat_url");
+
+-- If not provided, but mod_conversejs is loaded, default to that
+if not webchat_url and modulemanager.get_modules_for_host(module.host):contains("conversejs") then
+ local conversejs = module:depends("conversejs");
+ webchat_url = conversejs.module:http_url();
+end
+
module:depends("http");
local invites = module:depends("invites");
@@ -166,6 +175,7 @@
domain = module.host;
password = password;
app = app_info;
+ webchat_url = webchat_url;
});
else
local err_id = id.short();