Sunil Mohan Adapa 92aff3e63c
matrixsynapse: Add token based registration verification
- Allow setting registration verification to token based registration
verification.

- Configure the server with registration secret. Use the registration secret to
register an admin account for FreedomBox's use. Store the access token provided
during registration for future use.

- Use Admin API and the access token to create a registration verification
token. Show list of all registration tokens on app page.

Tests:

- On a fresh installation, setup succeeds, public registration is disabled.
Enabling public registration sets verification to be disabled by default.
Registration tokens are not shown in status.

- Without the patch, install the app and enable public registration. Apply the
patches. After update registration verification will show as disabled.

- Setting verification method to registration token works.
freedombox-registration-secret.yaml file is created. This file has 0o600
permissions and is owned by matrix-synapse:nogroup.
freedombox-admin-access-token.txt file is created. This file has 0o600
permissions and is owned by root:root. List of registration tokens are shown in
status section. Registration with Element app works with the token listed.

- Disabling registration verification works. Registration tokens are not shown
in status section. Registration with Element app works without verification.

- Disable app. Try to update the verification configuration to use tokens. An
error should be thrown that configuration can't be updated when app is disabled.

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
2023-03-27 17:07:08 -04:00

89 lines
2.7 KiB
HTML

{% extends "app.html" %}
{% comment %}
# SPDX-License-Identifier: AGPL-3.0-or-later
{% endcomment %}
{% load i18n %}
{% load static %}
{% block status %}
{{ block.super }}
<h3>{% trans "Status" %}</h3>
<p>
{% blocktrans trimmed %}
The Matrix server domain is set to <em>{{ domain_name }}</em>. User IDs
will look like <em>@username:{{ domain_name }}</em>. Changing the domain
name after the initial setup is currently not supported.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
New users can be registered from any client if public registration is
enabled.
{% endblocktrans %}
</p>
{% if config.public_registration and config.registration_verification == 'token' and registration_tokens %}
<p>
{% blocktrans trimmed %}
New users must use one of the following tokens for verification during
account registration:
{% endblocktrans %}
</p>
<div class="table-responsive table-registration-tokens">
<table class="table">
<thead>
<tr>
<th>{% trans "Registration Token" %}</th>
<th>{% trans "Uses Allowed" %}</th>
<th>{% trans "Pending Registrations" %}</th>
<th>{% trans "Completed Registrations" %}</th>
<th>{% trans "Expiry Time" %}</th>
</tr>
</thead>
<tbody>
{% for token in registration_tokens %}
<tr>
<td>{{ token.token }}</td>
<td>
{% if token.uses_allowed is None %}
{% trans "Unlimited" %}
{% else %}
{{ token.uses_allowed }}
{% endif %}
</td>
<td>{{ token.pending }}</td>
<td>{{ token.completed }}</td>
<td>
{% if token.expiry_time %}
{{ token.expiry_time|date:"DATETIME_FORMAT" }}
{% else %}
{% trans "None" %}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% if certificate_status != "valid" %}
<div class="alert alert-warning" role="alert">
{% url 'letsencrypt:index' as letsencrypt_url %}
{% blocktrans trimmed %}
The configured domain name is using a self-signed certificate.
Federation with other Matrix Synapse instances requires a valid TLS
certificate. Please go to <a href="{{ letsencrypt_url }}">Let's
Encrypt</a> to obtain one.
{% endblocktrans %}
</div>
{% endif %}
{% endblock %}
{% block page_js %}
<script type="text/javascript"
src="{% static 'matrixsynapse/matrixsynapse.js' %}"></script>
{% endblock %}