Wat ga je maken?

Een beheeromgeving op /admin waar een ingelogde beheerder artikelen kan aanmaken, bewerken en verwijderen. Dit is het hart van je herbruikbare CMS.

Waarom is dit nuttig?

Dit is precies wat je aan een klant oplevert. Doe je dit goed, dan hergebruik je deze code in élk volgend project.

Stappenplan

  1. Voeg een manier toe om beheerders te herkennen. Simpel: een is_adminkolom (boolean) op users. Netter: een rolekolom. Kies er één en leg uit waarom.
  2. Maak een middleware of een Gate die controleert of de ingelogde gebruiker beheerder is.
  3. Groepeer je routes met een prefix en middleware, zodat je de beveiliging op één plek regelt in plaats van bij elke route.
  4. Gebruik een resource controller: dat geeft je in één klap de zeven standaardroutes (index, create, store, show, edit, update, destroy). Zoek op wat elke methode doet.
  5. Maak een apart admin-layout (resources/views/layouts/admin.blade.php) met een zijbalk, los van je publieke layout.
  6. Bouw de overzichtstabel met acties per rij. Verwijderen doe je met een POST/DELETE-formulier, niet met een link.
  7. Vraag om bevestiging vóór verwijderen.
  8. Voeg flash-berichten toe ("Artikel opgeslagen") en maak daar een herbruikbare Blade-component van.
  9. Doe hetzelfde voor je categorieën, en eventueel voor de reacties uit opdracht 5 (goedkeuren/afkeuren).

Kleine hulpmiddelen

php artisan make:controller Admin/PostController --resource --model=Post
php artisan make:middleware EnsureUserIsAdmin
php artisan route:list --path=admin   # overzicht van al je adminroutes
// routes/web.php
Route::middleware(['auth', 'admin'])
    ->prefix('admin')
    ->name('admin.')
    ->group(function () {
        Route::resource('posts', Admin\PostController::class);
        Route::resource('categories', Admin\CategoryController::class);
    });
// Een Gate is vaak genoeg en scheelt een middleware
Gate::define('admin', fn (User $user) => $user->is_admin);

// In Blade:
@can('admin') <a href="{{ route('admin.posts.index') }}">Beheer</a> @endcan