Tutoriel Laravel 8 Middleware pour les pages d'administration étape par étape
Apprendre à ajouter un accès à certaines pages que par les administrateurs avec le middleware en Laravel 8.
Vous avez une application web en Laravel, dans laquelle vous aimeriez implémenté une partie utilisateur ayant des accès limités et une partie administrateur ayant tous les accès nécessaires à la gestion de votre application, dans ce tutoriel, nous allons découvrir comment le faire dans une application Laravel 8 ou ultérieur.
Nous vérifierons si l'utilisateur est administrateur ou non. S'il est utilisateur, nous n'obtiendrons aucun accès aux pages d'administration.
Un Middleware fournit un mécanisme pratique pour filtrer les requêtes HTTP entrant dans votre application. Laravel nous fournit un middleware d'authentification qui vérifie que l'utilisateur de votre application est authentifié. Mais ici, nous utilisons le middleware Admin où l'utilisateur qui n'est pas un administrateur, ne pourra pas avoir accès aux pages d’administration et le middleware redirigera l'utilisateur vers la page d’accueil automatiquement.
Cependant, si l'utilisateur est un Admin, le middleware permettra à la demande de continuer dans l'application. Si vous cherchez comment utiliser le middleware dans laravel et comment appeler ce middleware au contrôleur ? Alors, vous n’avez pas à vous inquiéter, car ici, nous allons étape par étape apprendre à créer un middleware pour les utilisateurs qui sont administrateurs.
Créer une fraîche application Laravel 8
Exécuter la commande suivante pour créer une application laravel :
composer create-project —prefer-dist laravel/laravel laravel-middleware
ou encore si vous avez déjà l'installeur laravel
laravel new laravel-middleware
Configuration de la base de données
Créer une base de données vide et mettez les configurations dans le fichier .env.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_middleware
DB_USERNAME=root
DB_PASSWORD=
Modifier la migration de la table users
Ouvrez le fichier : database\migrations\2014_10_12_000000_create_users_table.php et ajouter cette ligne dans les champs.
$table->boolean('is_admin')->nullable();
Après ajouter, exécuter la commande suivante pour lancer la migration:
php artisan migrate
Laravel Authentification
Nous allons installer un package laravel pour générer des routes, controllers et views pour l'authentification.
composer require laravel/ui
Taper la commande suivante pour génerer les vues et les controllers d’authentification
php artisan ui bootstrap --auth
Installer les dépendances NPM
npm install
npm run dev
création du middleware
Exécuter la commande suivante pour créer le middleware IsAdmin
php artisan make:middleware IsAdmin
un fichier middleware est créé dans App\Http\Middleware\IsAdmin.php
ouvrez le fichier du middleware créé et ajouter le code suivant
if (Auth::user() && Auth::user()->is_admin == 1) {
return $next($request);
}
return redirect('/')->with('error','Vous n'êtes pas un admin');
Ajoutons maintenant ce middleware dans le fichier kernel.php
à la propriété protected $routeMiddleware
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
...
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'admin' => \App\Http\Middleware\IsAdmin::class,
];
Route protegé par un middleware admin
Créez une route, qui doit être accessible que par l'administrateur, et si l'utilisateur n'est pas un administrateur, il sera rédirigé vers la page d'accueil; sinon, il peut accéder à cette page. Maintenant, si nous attribuons ce middleware Admin à une route, ces routes seront désormais protégées et accessibles uniquement lorsqu'un utilisateur autorisé est administrateur; sinon, il lui redirigera vers la page d'accueil.
Route::group(['middleware' => ['admin']], function () {
Route::get('admin', 'HomeController@admin')->name('admin');
});
Création et modification des views
Ajoutons le lien qui amène à la page admin dans la page home après que l’utilisateur soit connecté.
resources\views\home.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
{{ __('You are logged in!') }}
<div>
<a href="{{route('admin')}}">voir l'administration</a>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
créer une page à afficher lorsque l’utilisateur est un admin
resources\views\admin-page.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
{{ __('You are logged in!') }}
<div>
<p>Vous êtes un administrator</p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
Nous allons mettre à jour notre route admin, l’utilisateur doit être connecté et être un administrateur , donc nous devons mettre deux middleware dans une meme route.
Route::group(['middleware' => ['auth', 'admin']], function () {
Route::get('admin', 'HomeController@admin')->name('admin');
});
Génerer les données de test
Pour mieux faire notre test, nous allons utiliser des Seeders pour générer des des utilisateurs dans la base de données.
créer le seeder des users en tapant :
php artisan make:seeder UsersSeeder
mettre le code suivant dans le fichier :
database/seeds/UsersSeeder.php
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class UsersSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::truncate();
$users = [
[
'name' => 'Admin',
'email' => '[email protected]',
'password' => '12345678',
'is_admin' => 1,
],
[
'name' => 'User',
'email' => '[email protected]',
'password' => '13456',
'is_admin' => 0,
],
[
'name' => 'Client',
'email' => '[email protected]',
'password' => '13456',
'is_admin' => 0,
]
];
foreach($users as $user)
{
User::create([
'name' => $user['name'],
'email' => $user['email'],
'password' => Hash::make($user['password'])
]);
}
}
}
Nous avons créer des utilisateurs ayant comme valuer sur le champ is_admin 1 pour les admins et 0 pour les utilisateurs simples.
Puis taper la commande suivante pour executer les seeders :
php artisan db:seed —class=UsersSeeder
découvrez plus sur les seeders dans la documentation officielle.
Trouvez le projet complet sur Github ici.
Il est temps d’essayer cette merveilleuse application, connectez-vous simplement avec [email protected] ou [email protected].
Si vous vous connectez à l'aide de [email protected], vous pouvez accéder à la vue d'administration et si vous vous connectez à l'aide de [email protected], vous ne pouvez pas accéder à la section du tableau de bord d'administration.
Merci de nous laisser vos avis en commentaires, suivez nous sur Twitter, facebook et abonnez vous la newsletter pour ne rien rater.
Voir plus
Tutoriel Git pour une bonne prise en main
Git & GitHubTutoriel Laravel 8 et Jetstream
Laravel0 commentaire(s)
Laissez votre commentaire à @johnmbiya
Posts similaires
Tutoriel Laravel 8 : Générer et Lire un fichier Sitemap XML
Tutoriel Laravel 8 - Livewire CRUD : insérer, Lire, modifier et supprimer
Exemple simple Authentification en Laravel
Tutoriel Laravel 8 Importer et Exporter un fichier Excel et CSV
Catégories
Soyez au courant des dernières tendances
Abonnez-vous pour obtenir les meilleurs articles, tutoriels, astuces et informations !
BC DIBWE il y a 3 ans
Simple et rapide pour poser les bases.
Répondre