Files
computer-playbook/roles/web-app-mailu/templates/playwright.env.j2

39 lines
2.4 KiB
Bash

ADMIN_EMAIL={{ lookup('users', 'administrator').email | dotenv_quote }}
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') }}
BIBER_EMAIL={{ (lookup('users', 'biber').username ~ '@' ~ lookup('config', 'web-app-mailu', 'services.mailu.domain')) | 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 }}
# nocheck: playwright-service-gate — platform mail provider presence, no Mailu spec surface
EMAIL_SERVICE_ENABLED={{ lookup('config', application_id, 'services.email.enabled') | string | lower }}
LOGOUT_SERVICE_ENABLED={{ lookup('config', application_id, 'services.logout.enabled') | string | lower }}
MAILU_BASE_URL={{ lookup('tls', 'web-app-mailu', 'url.base') | dotenv_quote }}
MATOMO_BASE_URL={{ lookup('tls', 'web-app-matomo', 'url.base') | dotenv_quote }}
MATOMO_SERVICE_ENABLED={{ lookup('config', application_id, 'services.matomo.enabled') | string | lower }}
OIDC_ISSUER_URL={{ OIDC.CLIENT.ISSUER_URL | dotenv_quote }}
# nocheck: persona-block-rationale — Mailu's admin surface is a separate Flask app mounted at WEB_ADMIN=/admin (templates/env.j2), not the /webmail/ Roundcube surface the OIDC callback lands on; the shared adminInteraction never leaves webmail and its logout matcher hits Roundcube's openid-connect/logout link first, so the bespoke scenario navigates /admin and signs out at /admin/ui/logout instead (see README "Persona contract opt-outs").
PERSONA_ADMINISTRATOR_BLOCKED=true
# nocheck: persona-block-rationale — Mailu's OIDC fork interposes its own /sso/login page carrying a local form plus an openid-connect/auth link, while the authenticated Roundcube surface carries an openid-connect/logout link; the shared helper's name-based login matcher cannot tell the two apart and clicks logout, so the bespoke scenario targets the auth href explicitly (see README "Persona contract opt-outs").
PERSONA_BIBER_BLOCKED=true
# nocheck: playwright-service-gate — SSO surface; auth flow gated by Keycloak realm not Playwright env var
SSO_SERVICE_ENABLED={{ lookup('config', application_id, 'services.sso.enabled') | string | lower }}