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.