{% extends "conjunto/app_base.html" %} {% load i18n static conjunto %} {% block top_bar %}{% endblock %} {% block sidebar %}{% endblock %} {% block header %}{% endblock %} {% block extra_css %} {{ block.super }} {# Keep the password-toggle icon container visually flush with the input #} {# in all states (default, focus, is-invalid, browser autofill, dark mode). #} {# Root cause: .input-group-text has its own background (var(--tblr-bg-forms)) #} {# which does not track the adjacent input's background when the browser paints #} {# -webkit-autofill (yellow overlay) or when the input is marked .is-invalid. #} {% endblock extra_css %} {% block content %} {% block login_brand %}
{{ site.name|default:globals.project_title }} {{ site.name|default:globals.project_title }}
{% endblock login_brand %} {% block login_welcome %}{% endblock login_welcome %}

{% block login_title %}{% translate "Login to your account" %}{% endblock login_title %}

{% block login_form_top %}{% endblock login_form_top %} {% csrf_token %} {% if form.non_field_errors %} {% comment %} Non-field errors (e.g. "wrong username or password") rendered as a Tabler alert with icon. The message text itself is owned by django.contrib.auth / allauth and is intentionally kept generic for security reasons (no user enumeration). Do not rewrite or synthesize field-level errors from this. {% endcomment %} {% endif %}
{% if form.username.errors %}
{% for error in form.username.errors %}
{{ error }}
{% endfor %}
{% endif %}
{% if form.password.errors %}
{% for error in form.password.errors %}
{{ error }}
{% endfor %}
{% endif %}
{% block login_alternative_methods %} {% login_methods as methods %} {% if methods %}
{% translate "Or sign in with" %}
{% for method in methods %}
{% if method.rendered %} {{ method.rendered|safe }} {% else %} {% if method.icon %}{% endif %} {{ method.label }} {% endif %}
{% endfor %}
{% endif %} {% endblock login_alternative_methods %} {% block login_extensions %}{% endblock login_extensions %} {% block login_footer %}{% endblock login_footer %} {% endblock %}