réduit le score spam des emails, et rend le niveau de log configurable - Les styles .login-* étaient définis uniquement dans login.html, donc set_password.html s'affichait sans aucun style. Déplacé dans base.html. - La nav affichait les liens même sans session active. - mail.py ajoute Message-ID/Date et encode en quoted-printable (au lieu de base64) pour réduire le score spam (MISSING_MID, MISSING_DATE, MIME_BASE64_TEXT). - log_level devient une directive de config.json plutôt qu'une variable d'environnement. - README: section démarrage rapide (copie de config.example.json, compose.override.yml pour les surcharges locales).
57 lines
1.5 KiB
HTML
57 lines
1.5 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
<div class="login-wrap">
|
|
<div class="login-card">
|
|
<div class="login-header">
|
|
<span class="login-eyebrow">Décompte Horaire</span>
|
|
<h1 class="login-title">Connexion</h1>
|
|
</div>
|
|
|
|
{% if error %}
|
|
<div class="login-error">{{ error }}</div>
|
|
{% endif %}
|
|
|
|
{% if step == "email" %}
|
|
<form method="post" action="/login" class="login-form">
|
|
<label class="login-label" for="email">Adresse email</label>
|
|
<input
|
|
id="email"
|
|
class="login-input"
|
|
type="email"
|
|
name="email"
|
|
value="{{ email }}"
|
|
autocomplete="email"
|
|
autofocus
|
|
placeholder="prenom.nom@domaine.fr"
|
|
required
|
|
>
|
|
<button class="login-btn" type="submit">Continuer</button>
|
|
</form>
|
|
|
|
{% elif step == "password" %}
|
|
<form method="post" action="/login/password" class="login-form">
|
|
<input type="hidden" name="email" value="{{ email }}">
|
|
<label class="login-label">{{ email }}</label>
|
|
<input
|
|
id="password"
|
|
class="login-input"
|
|
type="password"
|
|
name="password"
|
|
autocomplete="current-password"
|
|
autofocus
|
|
placeholder="Mot de passe"
|
|
required
|
|
>
|
|
<button class="login-btn" type="submit">Se connecter</button>
|
|
</form>
|
|
|
|
{% elif step == "sent" %}
|
|
<p class="login-hint">
|
|
Un email a été envoyé à <b>{{ email }}</b> avec un lien pour définir ton mot de passe.
|
|
Le lien est valable 24h.
|
|
</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|