templates/security/forgot_password.html.twig line 1
{% extends 'base.html.twig' %}{% block title %}Mot de passe oublié | {{ parent() }}{% endblock %}{% block body %}<!-- ==================== MESSAGES ==================== --><div class="container mx-auto px-4 mb-6 max-w-md">{% include 'partials/_flash_messages.html.twig' %}</div><!-- ==================== FORMULAIRE ==================== --><div class="container mx-auto px-4 pb-16"><div class="max-w-md mx-auto"><div class="bg-white rounded-2xl shadow-xl border border-slate-200 overflow-hidden"><!-- Titre --><div class="px-6 pt-8 pb-2 text-center"><h2 class="text-2xl font-bold text-slate-800 mb-1">{% if step == 1 %}Mot de passe oublié{% else %}Nouveau mot de passe{% endif %}</h2><p class="text-sm text-slate-500">{% if step == 1 %}Vérifiez votre identité pour réinitialiser{% else %}Créez un nouveau mot de passe{% endif %}</p></div><div class="p-6 md:p-8 pt-2">{% if step == 1 %}<!-- ========== ÉTAPE 1 : Vérification ========== --><form method="post" class="space-y-6"><!-- Identifiant (email ou téléphone) --><div><label for="identifier" class="block text-sm font-medium text-slate-700 mb-2">E-mail ou numéro de téléphone</label><input type="text"name="identifier"id="identifier"class="w-full px-4 py-3 rounded-lg border border-slate-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent transition"placeholder="exemple@email.com ou 0123456789"requiredautofocus><p class="text-xs text-slate-400 mt-1">Entrez l'email ou le numéro de téléphone utilisé lors de l'inscription</p></div><!-- 4 derniers chiffres du téléphone --><div><label for="lastFourDigits" class="block text-sm font-medium text-slate-700 mb-2">4 derniers chiffres du numéro de téléphone</label><input type="text"name="last_four_digits"id="lastFourDigits"class="w-full px-4 py-3 rounded-lg border border-slate-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent transition"placeholder="Ex: 6789"maxlength="4"pattern="[0-9]{4}"required><p class="text-xs text-slate-400 mt-1">Entrez les 4 derniers chiffres de votre numéro de téléphone</p></div><!-- Bouton --><button type="submit"name="verify_user"class="w-full py-3 px-4 bg-gradient-to-r from-indigo-600 to-purple-600 text-white font-semibold rounded-lg hover:from-indigo-700 hover:to-purple-700 transition transform hover:scale-[1.02] shadow-lg flex items-center justify-center"><i class="fas fa-check mr-2"></i>Vérifier</button></form>{% else %}<!-- ========== ÉTAPE 2 : Nouveau mot de passe ========== --><form method="post" class="space-y-6"><!-- Info utilisateur --><div class="bg-indigo-50 border border-indigo-200 rounded-lg p-4 text-center"><p class="text-sm text-indigo-700"><i class="fas fa-user-check mr-2"></i>Identité vérifiée pour <strong>{{ identifier }}</strong></p></div><!-- Nouveau mot de passe --><div><label for="newPassword" class="block text-sm font-medium text-slate-700 mb-2">Nouveau mot de passe</label><div class="relative"><input type="password"name="new_password"id="newPassword"class="w-full px-4 py-3 rounded-lg border border-slate-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent transition"placeholder="••••••••"minlength="6"required><button type="button"onclick="togglePassword('newPassword', 'toggleNewIcon')"class="absolute inset-y-0 right-0 pr-4 flex items-center"><i class="fas fa-eye text-slate-400 hover:text-indigo-600 transition" id="toggleNewIcon"></i></button></div><p class="text-xs text-slate-400 mt-1">Minimum 6 caractères</p></div><!-- Confirmation mot de passe --><div><label for="confirmPassword" class="block text-sm font-medium text-slate-700 mb-2">Confirmer le mot de passe</label><div class="relative"><input type="password"name="confirm_password"id="confirmPassword"class="w-full px-4 py-3 rounded-lg border border-slate-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:border-transparent transition"placeholder="••••••••"minlength="6"required><button type="button"onclick="togglePassword('confirmPassword', 'toggleConfirmIcon')"class="absolute inset-y-0 right-0 pr-4 flex items-center"><i class="fas fa-eye text-slate-400 hover:text-indigo-600 transition" id="toggleConfirmIcon"></i></button></div></div><!-- Bouton --><button type="submit"name="reset_password"class="w-full py-3 px-4 bg-gradient-to-r from-green-600 to-emerald-600 text-white font-semibold rounded-lg hover:from-green-700 hover:to-emerald-700 transition transform hover:scale-[1.02] shadow-lg flex items-center justify-center"><i class="fas fa-save mr-2"></i>Enregistrer le mot de passe</button></form>{% endif %}<!-- Lien retour --><div class="mt-6 pt-6 border-t border-slate-200 text-center"><a href="{{ path('app_login') }}" class="text-sm text-indigo-600 hover:text-indigo-800 font-medium inline-flex items-center"><i class="fas fa-arrow-left mr-1"></i>Retour à la connexion</a></div></div></div></div></div><!-- ==================== JAVASCRIPT ==================== --><script>function togglePassword(inputId, iconId) {const passwordInput = document.getElementById(inputId);const toggleIcon = document.getElementById(iconId);if (passwordInput.type === 'password') {passwordInput.type = 'text';toggleIcon.classList.remove('fa-eye');toggleIcon.classList.add('fa-eye-slash');} else {passwordInput.type = 'password';toggleIcon.classList.remove('fa-eye-slash');toggleIcon.classList.add('fa-eye');}}</script>{% endblock %}