4 votes

Pourquoi l'erreur UserNotVerifiedException n'est-elle pas déclenchée ?

Dans mon application laravel 5.7.3 j'utilise https://github.com/jrean/laravel-user-verification et avec l'utilisation de middleware, je génère une erreur UserNotVerifiedException lorsque la connexion n'est pas vérifiée. Mais avec l'exception, je veux me déconnecter et rediriger vers la page /login et la lecture https://laravel.com/docs/master/errors#the-exception-handler doc en fichier app/Exceptions/Handler.php je fais :

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Auth;
use App\Exceptions\UserNotVerifiedException;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Foundation\Auth\RegistersUsers;

use Jrean\UserVerification\Traits\VerifiesUsers;  // Do I need to add these declarations here ?
use Jrean\UserVerification\Facades\UserVerification;

class Handler extends ExceptionHandler
{
    use RegistersUsers;
    use VerifiesUsers;
    protected $dontReport = [
        //
    ];

    protected $dontFlash = [
        'password',
        'password_confirmation',
    ];

    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    public function render($request, Exception $exception)
    {
        dump($exception);
        if ($exception instanceof UserNotVerifiedException) {
            dump("Make Logout");
            Auth::logout();
            return redirect('/admin/dashboard/index');

        }
        return parent::render($request, $exception);
    }
}

Dans le fichier de vidage, je vois le premier message, mais pas le second (et pourquoi il n'y a pas de redirection) :

UserNotVerifiedException {#509 
  #message: "This user is not verified."
  #code: 0
  #file: "/mnt/_work_sdb8/wwwroot/lar/Votes/vendor/jrean/laravel-user-verification/src/Middleware/IsVerified.php"
  #line: 26
  trace: {}
}

Quelle est la voie valable ?

Gracias.

0voto

Adlan Arif Zakaria Points 1273

Vous pouvez essayer de mettre l'espace de nom original comme :

if ($exception instanceof \Jrean\UserVerification\Exceptions\UserNotVerifiedException) {
    dump("Make Logout");
    Auth::logout();
    return redirect('/admin/dashboard/index');
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X