{# T27.1: per-session CSRF token. Mutating fetches read this and #} {# send it back in the X-CSRF-Token header; HTML forms include it #} {# as a hidden ``csrf_token`` field. Empty string when the request #} {# came in unauthenticated (we redirect to login before reaching #} {# render in that case; the empty value is defence-in-depth). #} {# T55 step 9: terminal-brutalist dashboard styles. Inlined here (not in dashboard.css) so the visual identity stays self-contained on this surface while the rest of the dashboard.css keeps powering the legacy pages (data, api-keys, scan-new). Once T55 has shipped to prod and the existing pages are migrated, the rules can be hoisted to dashboard.css. #}
| date | domain | status | expires | report | {% if is_admin %}debug | {% endif %}
|---|---|---|---|---|---|
| {{ s.scanned_at }} | {{ s.target_domain }} | {% if s.status == 'complete' %} {{ s.status }} {% elif s.status == 'failed' %} {{ s.status }} {% else %} {{ s.status }} {% endif %} | {{ s.expires_at_display }} | {% if s.expired %} {% else %} view → {% endif %} | {# T21 admin-only "View debug" link. Gated in-template via #} {# ``is_admin`` (resolved from ``user_role``) so a regular #} {# user doesn't even see the affordance. The route itself #} {# also enforces the admin-or-owner gate, defence in depth. #} {% if is_admin %}debug → | {% endif %}
recon scan https://example.com from your CLI to see results here.