Sélectionner une page

Les middlewares sont des fonctions qui permettent de relier des applications. Comme ils sont appelés à des moment bien définis, il permettent d’effectuer des traitements avant la sortie à l’écran comme vous pourrez le voir ici et aussi d’effectuer des tests de sécurité pour limiter des accès comme nous allons le voir ci-dessous.

Laravel permet de limiter l’accès à certaines pages en fonction de fonctions que vous définissez. Il suffit ensuite de le signaler dans le fichier routes/web.php en ajoutant simplement ->middleware(‘auth’); à la fin de votre route. Il est facile et particulièrement utile d’étendre ce principe à des contrôles personnalisé comme vérifier si l’utilisateur est un administrateur. Pour réaliser ce contrôle procédé comme suit:

Création du fichier

Pour créer le squelette du fichier, vous pouvez au choix copier un fichier existant ou utiliser artisan à l’aide de la commande suivante pour créer le fichier CheckAdmin.php:

php artisan make:middleware CheckAdmin

Une fois ce fichier crée (app/Http/Middleware/CheckAdmin.php), effectuez les tests que vous voulez comme limiter l’accès en fonction du type d’utilisateur.

use Closure;
use Auth;//Ajouté
use App\User;//Ajouté
use Session;//Ajouté

class CheckAdmin
{
    public function handle($request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect('home');
        }
        $iduser = Auth::user()->id;//$user = User::find(1);
        $cur_user = User::find($iduser);
        if($cur_user->level<5){
            return redirect('home');
        }
        return $next($request);
    }
}

Pour qu’il soit possible de l’appeler, il faut maintenant modifier le fichier le fichier App\Http\Kernel.php en ajoutant le nouveau middleware dans le bon tableau de la façon suivante:

protected $routeMiddleware = [
	/* ... */
	'checkadmin' => \App\Http\Middleware\CheckAdmin::class,
];

Il suffit ensuite de l’appeler dans le fichier de routage web.php en ajoutant son nom.

Route::any('backend/parameters/edit/{id}', ['uses'=>'Backend\ParametersController@edit'])->where('id', '[0-9]+')->middleware('checkadmin');

Voilà, vous avez maintenant mis en place un système simple et imparable qui bloque l’accès aux pages de votre choix en fonction du niveau de l’utilisateur.