{% extends "basis.html" %}{% from "schalter.html" import schalter %} {# Ory-Anmeldung (Bau 16.10.2026, Mockups Runde 2): eine Vorlage für Registrieren, Anmelden, Code, Bist du’s?, zweiter Faktor, Zugang vergessen, Adresse bestätigen und Konto & Anmeldewege. Alle Formulare posten an Timbres Vorschalter (v.action), nie direkt an Kratos. Fehler nach Neuladen (B2): Titel „Fehler: …“, Zusammenfassung oben (fokussiert von anmeldung.js), Felder mit aria-invalid + aria-describedby. Ohne Skript gehen Code, Passwort und Dienste. #} {% set ta = ta %} {% block titel %}{% if v.fehler %}{{ ta.fehler_praefix }}{% endif %}{{ ta.titel[v.seite] }} – Timbre{% endblock %} {% block kopf %}{% endblock %} {% block hauptklasse %} class="an-haupt"{% endblock %} {% block inhalt %}{% set ansicht = v.seite %} {% macro fehlerliste() %}{% if v.fehler %}
{{ h.text }}
{% endfor %}{% endmacro %} {% macro feldfehler(id) %}{% for f in v.fehler %}{% if f.feld == id %}{{ f.text }}{% endif %}{% endfor %}{% endmacro %} {% macro invalid(id) %}{% for f in v.fehler if f.feld == id %}{% if loop.first %} aria-invalid="true" aria-describedby="{{ id }}-fehler"{% endif %}{% endfor %}{% endmacro %} {% macro csrf() %}{% endmacro %} {% macro dienste_knoepfe(name="provider") %}{% if v.dienste %}{{ t.store.los if neutral else ta.reg_marke }}
{{ ta.reg_zeile }} {{ ta.reg_akzent }}
{# Early Bird / Store-Fassungen (11.11.2026): ohne die Sätze der Warteliste (texte_earlybird.py) #} {% set E = t.earlybird %}{{ E.reg_text if neutral else ta.reg_text }}
{# M7: Dienste nur versprechen, wenn sie eingerichtet sind #}{{ ta.reg_fuss }} {{ ta.anmelden_link }}
{{ teile[0] }}{{ v.adresse }}{{ teile[1] }}
{{ ta.andere_adresse }} {% if v.art == "login" %}{{ ta.kein_konto }} {{ ta.registrieren_link }}{% endif %}
{{ ta.bistdus_text }}
{% endif %} {% if anm_hinweis %}{{ ta['hinweis_' ~ anm_hinweis] }}
{% endif %} {{ fehlerliste() }}{{ hinweise() }} {% if v.passkey_challenge %} {% endif %} {% if "code" in v.gruppen %} {% endif %} {% if "password" in v.gruppen %}{{ ta.zugang_vergessen }} {{ ta.neu_hier }} {{ ta.konto_anlegen }}
{% endif %}{{ ta.zweiter_text_passkey if passkey_schritt else ta.zweiter_text }}
{{ fehlerliste() }}{{ hinweise() }} {% if passkey_schritt %} {% if anderer_weg %}{% endif %} {% else %} {% set hat_totp = "totp" in v.gruppen %}{% set hat_lookup = "lookup_secret" in v.gruppen %} {% if passkey_weg %}{{ ta.passkey_bestaetigen }} {% if hat_totp %}{% endif %}{% endif %} {% if hat_totp %} {% endif %} {% if hat_lookup %} {% set lookup_form %}{% endset %} {% if passkey_weg or hat_totp %}{{ ta.ohne_faktor }}
{{ ta.zugang_text if ansicht == "zugang" else ta.bestaetigen_text }}
{{ fehlerliste() }}{{ hinweise() }} {% if ansicht == "zugang" %} {% if dienste_an %}{{ ta.zugang_dienste }}
{% endif %}{{ ta.postfach_text }}
{{ ta.konto_intro }}
{{ fehlerliste() }}{{ hinweise() }} {% if wiederhergestellt %}{{ ta.wiederhergestellt }}
{% endif %} {% if absicht in ("passkey", "passwort") %}{{ ta['absicht_' ~ absicht] }}
{% endif %}{{ ta.schutz_an_text }}
{% else %}{{ ta.postfach_schluessel }}
{% endif %}{{ ta.passkeys_leer }}
{% endif %} {% if v.passkey_create %} {% endif %}{{ ta.passkey_geraet }}
{{ ta.app_verbunden }}
{% else %}{{ ta.app_fehlt }}
{% endif %}{{ ta.dienste_leer }}
{% endif %}{{ ta.codes_neu_offen if w.lookup_secret else ta.s_codes_text }}
{% else %}{{ ta.s_codes_text }}
{% endif %}{{ ta.codes_benutzt | replace("{n}", v.codes_benutzt | string) }}
{% endif %} {% elif w.lookup_secret %}{{ ta.codes_vorhanden }}
{% else %}{{ ta.codes_fehlen }}
{% endif %} {% if v.codes and v.codes_offen %} {% elif w.lookup_secret %} {% if v.codes_zeigen and not v.codes %}{% endif %}{{ ta.letzter_weg_hinweis }}
{% endif %}{{ nutzer.email }}
{{ ta.code_immer }}
{{ ta.geraete_text }}
{{ ta.loeschen_text }}