{# The shell this renders in is the product's choice. A reader who follows "Entrar" from a public page in Spanish used to land in the admin dashboard: dark sidebar reading GET STARTED, everything in English, no header, no footer, nothing of the site they came from. That is right for a back office and wrong for the front door. AUTH_LOGIN_LAYOUT names the template to extend, so a product with a public shell puts its front door in it and a product that is only a back office changes nothing. The widget classes are Bootstrap's names on purpose: the admin shell ships Bootstrap and styles them natively, and the public theme styles the same names itself, so one markup serves both shells. #} {% extends config.AUTH_LOGIN_LAYOUT or "base_template.html" %} {% block title %}{{ _('Log in') }}{% if site is defined %} ยท {{ site.name }}{% endif %}{% endblock %} {% block content %}

{{ _('Log in') }}

{% with messages = get_flashed_messages(with_categories=true) %} {% for category, message in messages %}
{{ message }}
{% endfor %} {% endwith %}
{{ form.hidden_tag() }}
{{ form.email.label(class="form-label") }} {{ form.email(class="form-control", placeholder=_('Your email address')) }} {% for error in form.email.errors %}

{{ error }}

{% endfor %}
{{ form.password.label(class="form-label") }} {{ form.password(class="form-control", placeholder=_('Your password')) }} {% for error in form.password.errors %}

{{ error }}

{% endfor %}
{{ form.remember_me(class="form-check-input") }} {{ form.remember_me.label(class="form-check-label") }}
{{ form.submit(class="btn btn-primary") }} {% if error %}

{{ error }}

{% endif %} {% for hook in get_template_hooks("auth.login.form_footer") %} {{ hook() | safe }} {% endfor %}
{% endblock %}