J'essaie de terminer ce middleware en larves qui vérifie pour s'assurer qu'il est abonné à un plan d'abonnement. Si l'utilisateur ne l'est pas, il redirige vers la page de paiement.
public function handle($request, Closure $next)
{
if(Auth::check()){
if (Auth::user()->subscribed('main')) {
return true;
}else{
return view('payments.payment')->with('user',Auth::user());
}
}else{
abort(403, 'Unauthorized action.');
}
return $next($request);
}
Je reçois cette erreur avec peu de chance de trouver une solution Appel à une fonction membre setCookie () sur null.
Le problème est où vous renvoyez true
. Un middleware doit renvoyer un objet de style réponse, pas un booléen.
Puisque c'est votre "bon" chemin et que vous voulez continuer avec votre logique d'application, vous devez remplacer return true;
Par return $next($request);
public function handle($request, Closure $next)
{
if(Auth::check()){
if (Auth::user()->subscribed('main')) {
return $next($request);
}else{
return view('payments.payment')->with('user',Auth::user());
}
}else{
abort(403, 'Unauthorized action.');
}
}
Sur une recommandation indépendante, vous pouvez nettoyer un peu votre logique conditionnelle pour rendre votre code plus facile à lire/suivre:
public function handle($request, Closure $next)
{
// If the user is not logged in, respond with a 403 error.
if ( ! Auth::check()) {
abort(403, 'Unauthorized action.');
}
// If the user is not subscribed, show a different payments page.
if ( ! Auth::user()->subscribed('main')) {
return view('payments.payment')->with('user',Auth::user());
}
// The user is subscribed; continue with the request.
return $next($request);
}
je résout en redirigeant vers un autre itinéraire return redirect()->to('route');