This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
{% extends "account/base.html" %}
{% load i18n %}
{% block head_title %}
{% trans "Sign In" %}
{% endblock head_title %}
{% block content %}
<h1>{% trans "Two-Factor Authentication" %}</h1>
<p>
{% blocktranslate %}Your account is protected by two-factor authentication. Please enter an authenticator code:{% endblocktranslate %}
</p>
<form class="authenticate"
method="POST"
action="{% url 'mfa_authenticate' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">{% trans "Sign In" %}</button>
</form>
{% endblock content %}

View File

@@ -0,0 +1,47 @@
{% extends "account/base.html" %}
{% load i18n %}
{% block head_title %}
{% trans "Two-Factor Authentication" %}
{% endblock head_title %}
{% block content %}
<h1>{% trans "Two-Factor Authentication" %}</h1>
<section class="totp">
<h2>{% translate "Authenticator App" %}</h2>
{% if authenticators.totp %}
<p>{% translate "Authentication using an authenticator app is active." %}</p>
<ul class="actions">
<li>
<a href="{% url 'mfa_deactivate_totp' %}">{% translate "Deactivate" %}</a>
</li>
</ul>
{% else %}
<p>{% translate "An authenticator app is not active." %}</p>
<ul class="actions">
<li>
<a href="{% url 'mfa_activate_totp' %}">{% translate "Activate" %}</a>
</li>
</ul>
{% endif %}
</section>
<section class="recovery_codes">
<h2>{% translate "Recovery Codes" %}</h2>
{% if authenticators.recovery_codes %}
<p>
{% blocktranslate with total_count=authenticators.recovery_codes.generate_codes|length count unused_count=authenticators.recovery_codes.get_unused_codes|length %}There is {{ unused_count }} out of {{ total_count }} recovery codes available.{% plural %}There are {{ unused_count }} out of {{ total_count }} recovery codes available.{% endblocktranslate %}
</p>
<ul class="actions">
<li>
<a href="{% url 'mfa_view_recovery_codes' %}">{% translate "View codes" %}</a>
</li>
<li>
<a href="{% url 'mfa_download_recovery_codes' %}">{% translate "Download codes" %}</a>
</li>
<li>
<a href="{% url 'mfa_generate_recovery_codes' %}">{% translate "Generate new codes" %}</a>
</li>
</ul>
{% else %}
<p>{% translate "No recovery codes set up." %}</p>
{% endif %}
</section>
{% endblock content %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}A new set of recovery codes has been generated.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Authenticator app activated.{% endblocktrans %}

View File

@@ -0,0 +1,2 @@
{% load i18n %}
{% blocktrans %}Authenticator app deactivated.{% endblocktrans %}

View File

@@ -0,0 +1,5 @@
{% extends "account/base.html" %}
{% load i18n %}
{% block head_title %}
{% trans "Recovery Codes" %}
{% endblock head_title %}

View File

@@ -0,0 +1,2 @@
{% for code in unused_codes %}{{ code }}
{% endfor %}

View File

@@ -0,0 +1,13 @@
{% extends "mfa/recovery_codes/base.html" %}
{% load i18n %}
{% block content %}
<h1>{% translate "Recovery Codes" %}</h1>
<p>
{% blocktranslate %}You are about to generate a new set of recovery codes for your account. This action will invalidate your existing codes. Are you sure?{% endblocktranslate %}
</p>
<form method="POST" action="{% url 'mfa_generate_recovery_codes' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">{% trans "Generate" %}</button>
</form>
{% endblock content %}

View File

@@ -0,0 +1,23 @@
{% extends "mfa/recovery_codes/base.html" %}
{% load i18n %}
{% block content %}
<h1>{% translate "Recovery Codes" %}</h1>
<p>
{% blocktranslate count unused_count=unused_codes|length %}There is {{ unused_count }} out of {{ total_count }} recovery codes available.{% plural %}There are {{ unused_count }} out of {{ total_count }} recovery codes available.{% endblocktranslate %}
</p>
{% if unused_codes %}
<textarea class="recovery-codes" rows="{{ unused_codes|length }}" readonly>{% for code in unused_codes %}{{ code }}
{% endfor %}
</textarea>
{% endif %}
<ul class="actions">
{% if unused_codes %}
<li>
<a href="{% url 'mfa_download_recovery_codes' %}">{% translate "Download codes" %}</a>
</li>
{% endif %}
<li>
<a href="{% url 'mfa_generate_recovery_codes' %}">{% translate "Generate new codes" %}</a>
</li>
</ul>
{% endblock content %}

View File

@@ -0,0 +1,18 @@
{% extends "mfa/totp/base.html" %}
{% load i18n %}
{% block content %}
<h1>{% trans "Activate Authenticator App" %}</h1>
{{ totp_svg|safe }}
<form method="POST" action="{% url 'mfa_activate_totp' %}">
{% csrf_token %}
<p>
<label>{% translate "Authenticator secret" %}:</label>
<input type="text"
disabled="disabled"
value="{{ form.secret }}"
size="{{ form.secret|length }}">
</p>
{{ form.as_p }}
<button type="submit">{% trans "Activate" %}</button>
</form>
{% endblock content %}

View File

@@ -0,0 +1,5 @@
{% extends "account/base.html" %}
{% load i18n %}
{% block head_title %}
{% trans "Authenticator App" %}
{% endblock head_title %}

View File

@@ -0,0 +1,13 @@
{% extends "mfa/totp/base.html" %}
{% load i18n %}
{% block content %}
<h1>{% trans "Deactivate Authenticator App" %}</h1>
<p>
{% blocktranslate %}You are about to deactivate authenticator app based authentication. Are you sure?{% endblocktranslate %}
</p>
<form method="POST" action="{% url 'mfa_deactivate_totp' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">{% trans "Deactivate" %}</button>
</form>
{% endblock content %}