Files
pointeuse-optimisator/app/templates/login.html
Jacquin Antoine 8e0f2c453f Instance locale sans config : mail et lien email optionnels
L'app tourne désormais pour soi sans rien configurer. Sans relais
SMTP, le lien de création de compte s'affiche directement à l'écran,
construit depuis l'URL en cours — aucune config d'URL nécessaire,
même en naviguant par IP sur le LAN (le contrôle anti-open-redirect
du Host ne concerne que le chemin par email). allowed_email_domain
vide accepte tous les emails : l'adresse ne sert que d'identifiant.

Le fichier d'exemple de config était périmé : il datait d'avant les
plages, force_secure_cookies et login_rate_limit_per_min, et
laissait croire le SMTP obligatoire. Il reflète maintenant les clés
réelles, toutes optionnelles et vides par défaut.

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-09-11 16:05:32 +02:00

65 lines
1.9 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>
{% elif step == "link" %}
<p class="login-hint">
Aucun serveur SMTP n'est configuré (optionnel) : le lien pour définir le mot de passe
de <b>{{ email }}</b> s'affiche ici au lieu d'être envoyé par email.
Il est valable 24h.
</p>
<p class="login-link"><a href="{{ link }}">{{ link }}</a></p>
{% endif %}
</div>
</div>
{% endblock %}