ADMIN_PASSWORD={{ lookup('users', 'administrator').password | dotenv_quote }}

ADMIN_USERNAME={{ lookup('users', 'administrator').username | dotenv_quote }}

APP_BASE_URL={{ lookup('tls', application_id, 'url.base') | dotenv_quote }}

BIBER_PASSWORD={{ lookup('users', 'biber').password | dotenv_quote }}

BIBER_USERNAME={{ lookup('users', 'biber').username | dotenv_quote }}

CANONICAL_DOMAIN={{ lookup('domain', application_id) | dotenv_quote }}

CDN_BASE_URL={{ lookup('tls', 'web-svc-cdn', 'url.base') | dotenv_quote }}

{% set logout_targets = [] %}
{% for _t in lookup('roles_with_service', 'logout') %}
{% set _ = logout_targets.append(_t | combine({'is_proxy_gated': lookup('sso', _t.id, 'is_proxy_gated') | bool})) %}
{% endfor %}
LOGOUT_TARGET_ROLES_JSON={{ logout_targets | to_json | dotenv_quote }}

# nocheck: persona-block-rationale — meta/services.yml declares no sso service, so this role is never registered as a Keycloak client; its only surface is the anonymous logout conductor plus the /logout endpoints proxied in templates/logout-proxy.conf.j2. There is no login form and no session to end.
PERSONA_ADMINISTRATOR_BLOCKED=true

# nocheck: persona-block-rationale — see PERSONA_ADMINISTRATOR_BLOCKED above; the injected logout JS is asserted per consumer role via roles_with_service('logout') in files/playwright/playwright.spec.js.
PERSONA_BIBER_BLOCKED=true

