{% extends "base.html" %} {% import "macros/ui.html" as ui %} {% block title %}{{ t(key="security-title", lang=lang | default(value='sk')) }}{% endblock title %} {% block content %}

{{ t(key="security-title", lang=lang | default(value='sk')) }}

{{ t(key="security-2fa-intro", lang=lang | default(value='sk')) }}

{% if error == "password" %} {{ ui::alert_danger(message=t(key="password-current-wrong", lang=lang | default(value='sk')), extra="mt-4") }} {% elif error == "code" %} {{ ui::alert_danger(message=t(key="security-2fa-code-wrong", lang=lang | default(value='sk')), extra="mt-4") }} {% elif error == "enroll" %} {{ ui::alert_danger(message=t(key="security-2fa-enroll-error", lang=lang | default(value='sk')), extra="mt-4") }} {% endif %} {# --- One-time backup codes, shown right after enabling / regenerating --- #} {% if backup_codes and backup_codes | length > 0 %}

{{ t(key="security-2fa-enabled-ok", lang=lang | default(value='sk')) }}

{{ t(key="security-2fa-backup-intro", lang=lang | default(value='sk')) }}

{% endif %} {% if enrolling %} {# --- Step 2: scan the QR and confirm a code --- #}

{{ t(key="security-2fa-scan", lang=lang | default(value='sk')) }}

TOTP QR

{{ t(key="security-2fa-manual", lang=lang | default(value='sk')) }}

{{ secret }}
{{ ui::input(name="code", id="code", type="text", required=true, autocomplete="one-time-code", attrs='inputmode="numeric" pattern="[0-9]*" maxlength="6" autofocus') }} {{ ui::button(label=t(key="security-2fa-confirm", lang=lang | default(value='sk')), type="submit", extra="w-full") }}
{% elif totp_enabled %} {# --- Enabled: status + remaining backup codes + disable / regenerate --- #}
{{ ui::badge(label=t(key="security-2fa-on", lang=lang | default(value='sk')), variant="success") }} {{ t(key="security-2fa-backup-remaining", lang=lang | default(value='sk')) }}: {{ backup_remaining }}

{{ t(key="security-2fa-regenerate", lang=lang | default(value='sk')) }}

{{ ui::input(name="current_password", id="regen_pw", type="password", required=true, autocomplete="current-password") }} {{ ui::button(label=t(key="security-2fa-regenerate", lang=lang | default(value='sk')), type="submit", variant="outline-secondary", extra="w-full") }}

{{ t(key="security-2fa-disable", lang=lang | default(value='sk')) }}

{{ t(key="security-2fa-disable-hint", lang=lang | default(value='sk')) }}

{{ ui::input(name="current_password", id="disable_pw", type="password", required=true, autocomplete="current-password") }} {{ ui::button(label=t(key="security-2fa-disable", lang=lang | default(value='sk')), type="submit", variant="danger", extra="w-full") }}
{% else %} {# --- Disabled: offer to enable --- #}
{{ ui::badge(label=t(key="security-2fa-off", lang=lang | default(value='sk')), variant="neutral") }}
{{ ui::button(label=t(key="security-2fa-enable", lang=lang | default(value='sk')), type="submit", extra="mt-4 w-full") }}
{% endif %}
{% endblock content %}