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.     </form>
  33.     <div class="mt-3">
  34.         <button class="btn btn-lg btn-primary" onclick="forgotPassword()">
  35.             Mot de passe oublié ?
  36.         </button>
  37.     </div>
  38.     {{ include('_footer.html.twig') }}
  39. {% endblock %}
  40. {% block javascripts %}
  41.     <script>
  42.         $(document).ready(function() {
  43.             // check if error in url
  44.             const urlParams = new URLSearchParams(window.location.search);
  45.             const error = urlParams.get('error');
  46.             if(error == 'Email inconnu') {
  47.                 Swal.fire({
  48.                     icon: 'error',
  49.                     title: 'Email inconnu !',
  50.                     text: 'Veuillez rensigner un email d\' un compte existant pour vous demander un nouveau mot de passe.',
  51.                 })
  52.             }
  53.         });
  54.         function forgotPassword() {
  55.             var email = $('#inputEmail').val();
  56.             console.log('Attempting password reset for email:', email);
  57.             
  58.             if(email == '') {
  59.                 Swal.fire({
  60.                     icon: 'error',
  61.                     title: 'Email manquant !',
  62.                     text: 'Veuillez rensigner un email pour vous demander un nouveau mot de passe.',
  63.                 })
  64.             } else {
  65.                 var resetUrl = "{{ path('app_password_reset') }}?email=" + encodeURIComponent(email);
  66.                 console.log('Generated reset URL:', resetUrl);
  67.                 
  68.                 // Afficher une confirmation avant l'envoi
  69.                 Swal.fire({
  70.                     icon: 'info',
  71.                     title: 'Envoi en cours...',
  72.                     text: 'Nous allons envoyer un email de réinitialisation à ' + email,
  73.                     showCancelButton: true,
  74.                     confirmButtonText: 'Envoyer',
  75.                     cancelButtonText: 'Annuler'
  76.                 }).then((result) => {
  77.                     if (result.isConfirmed) {
  78.                         console.log('User confirmed, sending request to:', resetUrl);
  79.                         
  80.                         // Faire une requête AJAX
  81.                         fetch(resetUrl)
  82.                             .then(response => {
  83.                                 console.log('Response status:', response.status);
  84.                                 return response.text();
  85.                             })
  86.                             .then(text => {
  87.                                 console.log('Response text:', text);
  88.                                 Swal.fire({
  89.                                     icon: 'success',
  90.                                     title: 'Email envoyé',
  91.                                     text: 'Un email de réinitialisation a été envoyé à votre adresse.'
  92.                                 });
  93.                             })
  94.                             .catch(error => {
  95.                                 console.error('Error:', error);
  96.                                 Swal.fire({
  97.                                     icon: 'error',
  98.                                     title: 'Erreur',
  99.                                     text: 'Une erreur est survenue lors de l\'envoi de l\'email.'
  100.                                 });
  101.                             });
  102.                     }
  103.                 });
  104.             }
  105.         }
  106.     </script>
  107. {% endblock %}