Hello #davidnation,
Ce que je vais vous montrer aujourd’hui vous sera très utile si vous voulez développer des applications web avec Lavarel, qui vont inclure des comptes administrateurs.
C’est important de définir ce genre de comptes, parce que certains utilisateurs devront certainement effectuer des actions que d’autres ne pourront pas faire (par exemple créer un produit…)
Pour les fans de Laravel, voici comment faire.
Ouvrez votre terminal et tapez
1 |
$ php artisan make:auth |
C’est tout. Si vous êtes nouveau avec Laravel, bienvenue. Pour les développeurs Laravel, cette fonctionnalité existe depuis longtemps. Maintenant, nous avons notre système d’authentification avec des formulaires de connexion et tout. Créons maintenant les administrateurs
Solution facile pour créer une page d’administration Laravel à l’aide d’un middleware personnalisé
La seule chose spécifique à Laravel 5.6 est l’assistant @guest dans les directives de front Blade. Dans la section HTML de l’application, ces assistants nous permettent de vérifier facilement si l’utilisateur est connecté ou non:
1 2 3 4 5 6 7 |
@auth // utilisateur connecté... @endauth @guest // utilisateur non connecté... @endguest |
Il existe de nombreuses manières de créer un système d’administration. Des packages prédéfinis vous permettent de gérer les rôles et les autorisations. Mais voici la manière simple que j’ai trouvée.
La manière dont nous y parvenons consiste à ajouter une colonne type sur la table des utilisateurs et à vérifier si un utilisateur possède le type admin via un middleware personnalisé.
- Ajoutez les types que vous souhaitez au modèle User et une méthode pour vérifier si un utilisateur est un administrateur.
1 |
/* app/User.php */ |
1 2 |
const ADMIN_TYPE = 'admin'; const DEFAULT_TYPE = 'default'; |
1 2 3 |
public function isAdmin() { return $this->type === self::ADMIN_TYPE; } |
2. Ajouter la colonne type au fichier de migration qui a créé votre table d’utilisateurs
1 |
/* database/migrations/2014_10_12_000000_create_users_table.php */ |
1 |
$table->string('type')->default('default'); |
3. Ajouter une valeur de type à la méthode create dans le contrôleur d’inscription
1 |
/* app/Http/Controllers/Auth/RegisterController.php */ |
1 2 3 4 5 6 7 8 |
protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), 'type' => User::DEFAULT_TYPE, ]); } |
4. Créez un fichier middleware personnalisé pour vérifier si un utilisateur est un administrateur. Générez ce fichier en utilisant php artisan make:middleware IsAdmin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace App\Http\Middleware; use Closure; class IsAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if(auth()->user()->isAdmin()) { return $next($request); } return redirect('home'); } } |
5. Enregistrez le middleware que vous venez de créer
1 |
'is_admin' => \App\Http\Middleware\IsAdmin::class, |
6. Ajoutez des routes qui invoquent le middleware
1 |
/* routes/web.php */ |
1 |
Route::view('/', 'welcome'); |
1 |
Auth::routes(); |
1 2 |
Route::get('/home', 'HomeController@index') ->name('home'); |
1 2 3 |
Route::get('/admin', 'AdminController@admin') ->middleware('is_admin') ->name('admin'); |
7. Créez un contrôleur d’administration avec php artisan make:controller AdminController
. Ce contrôleur renvoie le tableau de bord pour toutes les vues que vous souhaitez que votre administrateur voie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class AdminController extends Controller { public function __construct() { $this->middleware('auth'); } public function admin() { return view('admin'); } } |
Maintenant, si vous visitez /admin et que vous n’êtes pas connecté ou connecté en tant qu’administrateur, vous ne pourrez pas accéder à la page.
Pour créer un utilisateur admin, vous pouvez utiliser tinker: C’est à peu près tout!
1 2 3 |
$ php artisan tinker >>> use App\User; >>>User::where('email', 'connorleech@gmail.com')->update(['type' => 'admin']); |
- Merci d’avoir lu !
Si vous avez aimé cet article,
- Faites un coucou sur : Instagram | Facebook | Twitter |
- Avez-vous besoin d’aide pour votre projet web ? Ecrivez moi à l’adresse suivante : david@oschool.ci
Also published on Medium.