login_waiting.html 30 lignes · 1338 octets
<!DOCTYPE html>
<html lang="{{ current_locale }}">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="{{ subtitle }}">
    <title>{{ page_title }}</title>
    <link href="/static/css/tailwind.css" rel="stylesheet">
    <link href="/static/css/custom.css" rel="stylesheet">
</head>
<body class="min-h-screen bg-base-200 flex items-center justify-center px-4">
    <main class="card bg-base-100 shadow-xl max-w-md w-full" role="status" aria-live="polite">
        <div class="card-body items-center text-center py-10">
            <span class="loading loading-spinner loading-lg text-primary mb-4"></span>
            <h1 class="card-title text-2xl mb-2">{{ heading }}</h1>
            <p class="text-base-content/80 mb-6">{{ explainer }}</p>
            <a href="/login" class="btn btn-ghost btn-sm">{{ cancel_button }}</a>
        </div>
    </main>

    {# ANSSI FUI-CSP-1 — script externalised so CSP can drop #}
    {# `script-src 'unsafe-inline'` for this template. The challenge_id #}
    {# travels via a `data-*` attribute, not interpolated into JS code. #}
    <script
        id="fediverse-sse-script"
        src="/static/js/fediverse-sse.js"
        data-challenge-id="{{ challenge_id }}"
        defer></script>
</body>
</html>