Laravel 8

10 commentaires

  • jondelweb

    Salut BestMomo,

    J’ai un souci et je ne trouve pas de réponse malgré mes nombreuses recherches… Je ne comprends pas pourquoi et ça m’agace…

    Je m’explique…

    La stack : laravel 8, JetStream, Livewire

    J’ai un formulaire dans une vue « guest » qui est relié a un controller. Dans celui-ci, j’effectue tout un tas de traitement et je créé « à la volée » un User. Je connecte celui-ci via la methode Auth::attempt() et lorsque celui-ci est connecté, je le redirige vers la vue « dashboard » (Que je n’ai pas touché).

    Et c’est là que j’ai mon souci, j’ai un écran blanc (of the death) !!!

    L’utilisateur est bien connecté car si je met le @livewire(‘navigation-dropdown’) dans une vue « guest », il s’affiche bien et je peux déconnecter mon User (et du coup, la vue ne fonctionne plus…)

    Je me demande si c’est parce que je le crée « à la volée » (cad sans passer par fortify) et que je le connecte « manuellement ».

    Je ne vois pas comment overrider les méthodes de fortify et en tout cas, je n’ai pas de solutions…

    Une idée peut-être ?

    Merci d’avance…

    • bestmomo

      Salut,

      Il n’y a rien de spécial à ce niveau avec Jetstream. Si on regarde dans le contrôleur on trouve :
      return view('profile.show', [
      'request' => $request,
      'user' => $request->user(),
      ]);

      Je suppose que dans ta situation on n’a pas encore l’utilisateur en session et du coup $request->user() est null.
      Regarde la réponse donnée ici.

      • jondelweb

        Re salut,

        Merci pour ta réponse mais je ne suis pas certain de comment faire…

        J’ai rajouter :

        « `
        $request->session()->put(‘user_id’, $user->id);
        « `
        dans mon controller mais ça ne change rien… J’ai toujours mon put… d’écran blanc sur mon dashboard…

      • jondelweb

        En fait c’est vraiment bizarre…

        dans route.php j’ai :

        Route::middleware([‘auth’])->group(function () {
        Route::get(‘/dashboard’, [DashboardController::class, ‘index’])->name(‘dashboard’);
        });

        Dans mon dashboardController j’ai :

        public function index() {

        dd(‘toto’);
        return view(‘dashboard’);
        }

        et dans mon controller pour faire l’authentification après tous les traitement, j’ai :

        $this->updateSession($request,$user->id);

        // authentification du user
        $credentials = $request->only(’email’, ‘password’);

        if (Auth::attempt($credentials)) {
        return redirect()->route(‘dashboard’);
        } else {
        return view(‘welcome’);
        }
        }

        function updateSession(Request $request, $id)
        {
        $request->session()->put(‘user_id’, $id);
        $request->session()->migrate(true);
        }

        Et ben je vais bien sur la route ‘dashboard’ (je la vois dans l’url) mais on dirait que ça ne passe même pas dans le dashboardController car le dd(‘toto’) ne s’effectue pas…

    • bestmomo

      Salut

      Si tu observes bien les évolutions récentes tu verras que Vue est peu à peu abandonné en tant que librairie frontend sauf pour les SPA. La mode est à la légèreté avec Alpine.js et autres librairies légères. Personnellement j’en suis même revenu au Vanilla Javascript.

      Il n’y a qu’à voir Jetstream pour se rendre compte de cette évolution.

Leave a Reply