{% if not client or client.show_client_id %}{{ client_id }}{% endif %}
{% if client and client.show_description and client.description %}{{ client.description }}{% endif %}
wants to access your account
Requested permissions:
{% for s in scope.split() %}
{% if s == 'openid' %}
{% elif s == 'profile' %}
{% elif s == 'email' %}
{% elif s == 'offline_access' %}
{% else %}
{% endif %}
{{ s }}
{% endfor %}
{% endmacro %}
{% macro login_form_block() %}
{% if persona_mode %}
{% elif totp_step %}
{# Declarative TOTP second factor (#348): a further phase after
a successful password check, riding two_step's machinery.
OAuth parameters stay in the URL (the form has no action, so
it always lands back on this same /authorize?... URL); since
nothing is stored server-side, the password travels forward
as a hidden field too and is re-checked on submit. #}
{% elif two_step_login and not login_username %}
{% elif two_step_login %}
{% else %}
{% endif %}
{% if (two_step_login or totp_step) and login_username %}
{# "Change username" for the password step and the TOTP step
alike - one block, so the two screens cannot drift, the same
shape login.html uses (#348 review, cleanup). #}
{% endif %}
{% endmacro %}
{% set horizontal = client and client.layout == 'horizontal' %}
NanoIDP
Authorization Request
{% if error %}
{{ error }}
{% endif %}
{% if (two_step_login or totp_step) and login_username %}
Signing in as
{{ login_username }}
{% endif %}
{% if horizontal %}
{# The password-only step is much shorter than the client-info
column, so it's top-aligned rather than centered - but only
once the "Signing in as" block above has already shown the
identity; every other case keeps the original centering
(#323 review round 1, before-merge 4: this must not change
existing horizontal-layout clients that never opt into
two_step_login). #}