Integrate MAS with Synapse

This commit is contained in:
Your Name
2025-12-01 08:14:13 -06:00
parent df07d51d8b
commit a3d39d901b
404 changed files with 22542 additions and 2 deletions

View File

@@ -0,0 +1,52 @@
{#
Copyright 2025 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
-#}
{% extends "base.html" %}
{% block content %}
<header class="page-heading">
<div class="icon">
{{ icon.visibility_on() }}
</div>
<div class="header">
<h1 class="title">{{ _("mas.choose_display_name.headline") }}</h1>
<p class="text">{{ _("mas.choose_display_name.description") }}</p>
</div>
</header>
<div class="cpd-form-root">
<form method="POST" class="cpd-form-root">
{% if form.errors is not empty %}
{% for error in form.errors %}
<div class="text-critical font-medium">
{{ errors.form_error_message(error=error) }}
</div>
{% endfor %}
{% endif %}
<input type="hidden" name="csrf" value="{{ csrf_token }}" />
<input type="hidden" name="action" value="set" />
{% call(f) field.field(label=_("common.display_name"), name="display_name", form_state=form, class="mb-4") %}
<input {{ field.attributes(f) }}
id="cpd-text-control"
type="text"
maxlength="256"
class="cpd-text-control"
required />
{% endcall %}
{{ button.button(text=_("action.continue")) }}
</form>
<form method="POST" class="cpd-form-root">
<input type="hidden" name="csrf" value="{{ csrf_token }}" />
<input type="hidden" name="action" value="skip" />
{{ button.button(text=_("action.skip"), kind="tertiary") }}
</form>
</div>
{% endblock content %}

View File

@@ -0,0 +1,30 @@
{#
Copyright 2025 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
-#}
{% extends "base.html" %}
{% block content %}
<main class="flex flex-col gap-6">
<header class="page-heading">
<div class="icon invalid">
{{ icon.error_solid() }}
</div>
<div class="header">
<h1 class="title">
{{ _("mas.email_in_use.title", email=email) }}
</h1>
<p class="text">
{{ _("mas.email_in_use.description") }}
</p>
</div>
</header>
{% set params = action | default({}) | to_params(prefix="?") %}
{{ button.link_outline(text=_("action.start_over"), href="/register" ~ params) }}
</main>
{% endblock %}

View File

@@ -0,0 +1,44 @@
{#
Copyright 2025 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
-#}
{% extends "base.html" %}
{% block content %}
<header class="page-heading">
<div class="icon">
{{ icon.key_solid() }}
</div>
<div class="header">
<h1 class="title">{{ _("mas.registration_token.headline") }}</h1>
<p class="text">{{ _("mas.registration_token.description") }}</p>
</div>
</header>
<div class="cpd-form-root">
<form method="POST" class="cpd-form-root">
{% if form.errors is not empty %}
{% for error in form.errors %}
<div class="text-critical font-medium">
{{ errors.form_error_message(error=error) }}
</div>
{% endfor %}
{% endif %}
<input type="hidden" name="csrf" value="{{ csrf_token }}" />
{% call(f) field.field(label=_("mas.registration_token.field"), name="token", form_state=form, class="mb-4") %}
<input {{ field.attributes(f) }}
id="cpd-text-control"
type="text"
class="cpd-text-control"
required />
{% endcall %}
{{ button.button(text=_("action.continue")) }}
</form>
</div>
{% endblock content %}

View File

@@ -0,0 +1,53 @@
{#
Copyright 2024, 2025 New Vector Ltd.
Copyright 2022-2024 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
-#}
{% extends "base.html" %}
{% block content %}
<header class="page-heading">
<div class="icon">
{{ icon.send_solid() }}
</div>
<div class="header">
<h1 class="title">{{ _("mas.verify_email.headline") }}</h1>
<p class="text">{{ _("mas.verify_email.description", email=authentication.email) }}</p>
</div>
</header>
<form method="POST" class="cpd-form-root">
{% if form.errors is not empty %}
{% for error in form.errors %}
<div class="text-critical font-medium">
{{ errors.form_error_message(error=error) }}
</div>
{% endfor %}
{% endif %}
<input type="hidden" name="csrf" value="{{ csrf_token }}" />
{% call(f) field.field(label=_("mas.verify_email.6_digit_code"), name="code", form_state=form, class="mb-4 self-center") %}
<div class="cpd-mfa-container">
<input {{ field.attributes(f) }}
inputmode="numeric"
type="text"
minlength="0"
maxlength="6"
class="cpd-mfa-control"
pattern="\d{6}"
required
autocomplete="one-time-code">
{% for _ in range(6) %}
<div class="cpd-mfa-digit" aria-hidden="true"></div>
{% endfor %}
</div>
{% endcall %}
{{ button.button(text=_("action.continue")) }}
</form>
{% endblock content %}