Le coin des artisans

Si l'user n'est pas authentifié, ouvrir une popup

Avatar de Yann
Yann

Ce que je voudrais, c'est que lorsque l'on arrive sur une page ou l'authentification est nécéssaire, on soit redirigé vers l'accueil et que ça ouvre automatiquement ma popup de login.

En fait j'ai réussi et ça fonctionne, je voudrais juste avoir votre avi sur ma façon de procéder.

J'ai modifié la class du middleware Authenticate comme ceci :

<?php

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            $request->session()->put('loginModal', 'yes');
            return route('welcome');
        }
    }
}

Donc si l'user est redirigé car il n'est pas authentifié, j'ajoute en session loginModal : yes. Ensuite, dans le template, j'ai fait comme ceci :

@if($errors->has('auth.email') OR (!empty(Session::get('loginModal')) && Session::get('loginModal') == 'yes'))
  <script>
  $(function() {
      $('#loginModal').modal('show');

  });
  </script>
  @php Request:session()->forget('loginModal'); @endphp
@endif

J'efface la session à la fin, mais je me demande si cela est vraiment propre, s'il n'y a pas une manière plus subtile de procéder ? Comme utiliser le welcome controller peut etre...

Merci d'avance ! :)

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.