templates/security/forgot_password.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Recuperar contraseña{% endblock %}
  3. {% block body_class %}login-page bg-light{% endblock %}
  4. {% block body %}
  5. <style>
  6.     .login-page {
  7.         background: linear-gradient(135deg, #fafbfc 0%, #f0f4f8 100%);
  8.         background-image: 
  9.             linear-gradient(135deg, rgba(236, 239, 241, 0.7) 0%, transparent 70%),
  10.             linear-gradient(45deg, rgba(207, 216, 220, 0.4) 0%, transparent 70%);
  11.         font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
  12.         display:flex;
  13.         align-items: center;
  14.         justify-content: center;
  15.         min-height: 100vh;
  16.     }
  17.     .auth-container {
  18.         width: 100%;
  19.         max-width: 440px;
  20.         margin: 2rem auto;
  21.         padding: 0 15px;
  22.     }
  23.     
  24.     .auth-card {
  25.         background: white;
  26.         border-radius: 12px;
  27.         box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  28.         padding: 40px;
  29.         position: relative;
  30.         overflow: hidden;
  31.         border: 1px solid #e1e5e9;
  32.     }
  33.     
  34.     .auth-card::before {
  35.         content: '';
  36.         position: absolute;
  37.         top: 0;
  38.         left: 0;
  39.         width: 100%;
  40.         height: 4px;
  41.         background: linear-gradient(135deg, #1a4b8c 0%, #2c6cb0 100%);
  42.     }
  43.     
  44.     .auth-header {
  45.         text-align: center;
  46.         margin-bottom: 30px;
  47.     }
  48.     
  49.     .auth-icon {
  50.         width: 70px;
  51.         height: 70px;
  52.         background: linear-gradient(135deg, #1a4b8c 0%, #2c6cb0 100%);
  53.         border-radius: 50%;
  54.         display: flex;
  55.         align-items: center;
  56.         justify-content: center;
  57.         margin: 0 auto 20px;
  58.         color: white;
  59.         font-size: 28px;
  60.     }
  61.     
  62.     .auth-title {
  63.         color: #2d3748;
  64.         font-weight: 700;
  65.         font-size: 1.75rem;
  66.         margin-bottom: 8px;
  67.     }
  68.     
  69.     .auth-subtitle {
  70.         color: #718096;
  71.         font-size: 0.95rem;
  72.         line-height: 1.5;
  73.     }
  74.     
  75.     .auth-form-label {
  76.         font-weight: 600;
  77.         color: #2d3748;
  78.         margin-bottom: 8px;
  79.         font-size: 0.9rem;
  80.         display: block;
  81.     }
  82.     
  83.     .auth-form-control {
  84.         border: 2px solid #e1e5e9;
  85.         border-radius: 8px;
  86.         padding: 12px 45px 12px 16px;
  87.         font-size: 0.95rem;
  88.         transition: all 0.3s ease;
  89.         background: white;
  90.         width: 100%;
  91.     }
  92.     
  93.     .auth-form-control:focus {
  94.         border-color: #1a4b8c;
  95.         box-shadow: 0 0 0 0.2rem rgba(26, 75, 140, 0.1);
  96.         outline: none;
  97.     }
  98.     
  99.     .auth-input-group {
  100.         position: relative;
  101.         margin-bottom: 1.5rem;
  102.     }
  103.     
  104.     .auth-input-icon {
  105.         position: absolute;
  106.         right: 15px;
  107.         top: 67%;
  108.         transform: translateY(-50%);
  109.         color: #718096;
  110.         z-index: 5;
  111.         font-size: 1rem;
  112.     }
  113.     
  114.     .auth-btn-primary {
  115.         background: linear-gradient(135deg, #1a4b8c 0%, #2c6cb0 100%);
  116.         border: none;
  117.         border-radius: 8px;
  118.         padding: 14px 20px;
  119.         font-weight: 600;
  120.         font-size: 1rem;
  121.         transition: all 0.3s ease;
  122.         color: white;
  123.         width: 100%;
  124.         cursor: pointer;
  125.     }
  126.     
  127.     .auth-btn-primary:hover {
  128.         transform: translateY(-2px);
  129.         box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
  130.         background: #1a4b8c;
  131.         color: white;
  132.     }
  133.     
  134.     .auth-footer {
  135.         text-align: center;
  136.         margin-top: 25px;
  137.         padding-top: 20px;
  138.         border-top: 1px solid #e1e5e9;
  139.     }
  140.     
  141.     .auth-link {
  142.         color: #1a4b8c;
  143.         text-decoration: none;
  144.         font-weight: 600;
  145.         transition: color 0.3s ease;
  146.     }
  147.     
  148.     .auth-link:hover {
  149.         color: #153a6d;
  150.         text-decoration: underline;
  151.     }
  152.     
  153.     .auth-security-note {
  154.         background: #f7fafc;
  155.         border-radius: 8px;
  156.         padding: 15px;
  157.         margin-top: 20px;
  158.         font-size: 0.85rem;
  159.         color: #718096;
  160.         text-align: center;
  161.         border-left: 3px solid #38b2ac;
  162.         line-height: 1.5;
  163.     }
  164.     
  165.     .auth-security-note i {
  166.         color: #38b2ac;
  167.         margin-right: 8px;
  168.     }
  169.     
  170.     .required::after {
  171.         content: " *";
  172.         color: #e74c3c;
  173.     }
  174.     
  175.     .text-muted {
  176.         color: #718096 !important;
  177.     }
  178.     
  179.     .alert {
  180.         padding: 12px 16px;
  181.         border-radius: 8px;
  182.         margin-bottom: 20px;
  183.     }
  184.     
  185.     .alert-success {
  186.         background-color: #c6f6d5;
  187.         border: 1px solid #9ae6b4;
  188.         color: #2d784d;
  189.     }
  190.     
  191.     .alert-danger {
  192.         background-color: #fed7d7;
  193.         border: 1px solid #feb2b2;
  194.         color: #c53030;
  195.     }
  196. </style>
  197. <div class="auth-container">
  198.     <div class="auth-card">
  199.         <div class="auth-header">
  200.             <div class="auth-icon">
  201.                 <i class="fas fa-key"></i>
  202.             </div>
  203.             <h1 class="auth-title">Recuperar Contraseña</h1>
  204.             <p class="auth-subtitle">Ingresa tu correo para recibir el enlace de recuperación</p>
  205.         </div>
  206.         {% for message in app.flashes('success') %}
  207.             <div class="alert alert-success" role="alert">{{ message }}</div>
  208.         {% endfor %}
  209.         {% for message in app.flashes('error') %}
  210.             <div class="alert alert-danger" role="alert">{{ message }}</div>
  211.         {% endfor %}
  212.         <form method="post" action="{{ path('app_forgot_password_request') }}">
  213.             <div class="auth-input-group">
  214.                 <label for="email" class="auth-form-label required">Correo Electrónico</label>
  215.                 <input type="email" name="email" id="email" class="auth-form-control" 
  216.                        placeholder="tu@correo.com" required>
  217.                 <div class="auth-input-icon">
  218.                     <i class="fas fa-envelope"></i>
  219.                 </div>
  220.             </div>
  221.             <div class="d-grid">
  222.                 <button class="btn auth-btn-primary btn-lg" type="submit">
  223.                     <i class="fas fa-paper-plane me-2"></i>Enviar Enlace de Recuperación
  224.                 </button>
  225.             </div>
  226.         </form>
  227.         <div class="auth-footer">
  228.             <span class="text-muted">¿Recordaste tu contraseña?</span>
  229.             <a href="{{ path('app_login') }}" class="auth-link ms-1">Iniciar Sesión</a>
  230.         </div>
  231.         
  232.         <div class="auth-security-note">
  233.             <i class="fas fa-shield-alt"></i>
  234.             Te enviaremos un enlace seguro para restablecer tu contraseña
  235.         </div>
  236.     </div>
  237. </div>
  238. <!-- Asegurar carga de Font Awesome si no está en base.html.twig -->
  239. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  240. {% endblock %}