templates/security/login.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Log in!{% endblock %}
  3. {% block body %}
  4. <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
  5. <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
  6.     {{ include('_header.html.twig') }}
  7.     <form method="post" action="{{ path('app_login') }}">
  8.         {% if error %}
  9.             <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
  10.         {% endif %}
  11.         {% if app.user %}
  12.             <div class="mb-3">
  13.                 Vous êtes déjà connecté en tant que {{ app.user.userIdentifier }}, <a href="{{ path('app_logout') }}">Logout</a>
  14.             </div>
  15.         {% endif %}
  16.         <h1 class="h3 mb-3 font-weight-normal">Connection</h1>
  17.         <label for="inputEmail">Email</label>
  18.         <input type="email" value="{{ last_username }}" name="email" id="inputEmail" class="form-control" autocomplete="email" required autofocus>
  19.         <label for="inputPassword">Mot de passe</label>
  20.         <input type="password" name="password" id="inputPassword" class="form-control" autocomplete="current-password" required>
  21.         <input type="hidden" name="_csrf_token"
  22.             value="{{ csrf_token('authenticate') }}"
  23.         >
  24.         <div class="checkbox mb-3">
  25.             <label>
  26.                 <input type="checkbox" name="_remember_me"> Remember me
  27.             </label>
  28.         </div>
  29.         <button class="btn btn-lg btn-primary mt-2" type="submit">
  30.             Se connecter
  31.         </button>
  32.         <button class="btn btn-lg btn-primary mt-2" onclick="forgotPassword()">
  33.             Mot de passe oublié ?
  34.         </button>
  35.     </form>
  36.     {{ include('_footer.html.twig') }}
  37. {% endblock %}
  38. {% block javascripts %}
  39.     <script>
  40.         $(document).ready(function() {
  41.             // check if error in url
  42.             const urlParams = new URLSearchParams(window.location.search);
  43.             const error = urlParams.get('error');
  44.             if(error == 'Email inconnu') {
  45.                 Swal.fire({
  46.                     icon: 'error',
  47.                     title: 'Email inconnu !',
  48.                     text: 'Veuillez rensigner un email d\' un compte existant pour vous demander un nouveau mot de passe.',
  49.                 })
  50.             }
  51.         });
  52.         function forgotPassword() {
  53.             var email = $('#inputEmail').val();
  54.             console.log('Attempting password reset for email:', email);
  55.             
  56.             if(email == '') {
  57.                 Swal.fire({
  58.                     icon: 'error',
  59.                     title: 'Email manquant !',
  60.                     text: 'Veuillez rensigner un email pour vous demander un nouveau mot de passe.',
  61.                 })
  62.             } else {
  63.                 var resetUrl = "{{ path('app_password_reset') }}?email=" + encodeURIComponent(email);
  64.                 console.log('Generated reset URL:', resetUrl);
  65.                 
  66.                 // Afficher une confirmation avant l'envoi
  67.                 Swal.fire({
  68.                     icon: 'info',
  69.                     title: 'Envoi en cours...',
  70.                     text: 'Nous allons envoyer un email de réinitialisation à ' + email,
  71.                     showCancelButton: true,
  72.                     confirmButtonText: 'Envoyer',
  73.                     cancelButtonText: 'Annuler'
  74.                 }).then((result) => {
  75.                     if (result.isConfirmed) {
  76.                         console.log('User confirmed, sending request to:', resetUrl);
  77.                         
  78.                         // Faire une requête AJAX
  79.                         fetch(resetUrl)
  80.                             .then(response => {
  81.                                 console.log('Response status:', response.status);
  82.                                 return response.text();
  83.                             })
  84.                             .then(text => {
  85.                                 console.log('Response text:', text);
  86.                                 Swal.fire({
  87.                                     icon: 'success',
  88.                                     title: 'Email envoyé',
  89.                                     text: 'Un email de réinitialisation a été envoyé à votre adresse.'
  90.                                 });
  91.                             })
  92.                             .catch(error => {
  93.                                 console.error('Error:', error);
  94.                                 Swal.fire({
  95.                                     icon: 'error',
  96.                                     title: 'Erreur',
  97.                                     text: 'Une erreur est survenue lors de l\'envoi de l\'email.'
  98.                                 });
  99.                             });
  100.                     }
  101.                 });
  102.             }
  103.         }
  104.     </script>
  105. {% endblock %}