Parçacıklara Dön
LaravelPHP

Laravel Özel Middleware

Kullanıcı rollerini kontrol eden ve istek detaylarını loglayan middleware.

laravelmiddlewareauthrequest
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class EnsureUserHasRole
{
    public function handle(Request 400">$request, Closure 400">$next, string ...400">$roles): Response
    {
        400">$user = 400">$request->user();

        if (!400">$user || !in_array(400">$user->role, 400">$roles)) {
            if (400">$request->expectsJson()) {
                return response()->json([class=class="text-emerald-400">"text-emerald-400">'error' => class=class="text-emerald-400">"text-emerald-400">'Forbidden'], 403);
            }
            abort(403, class=class="text-emerald-400">"text-emerald-400">'Unauthorized action.');
        }

        return 400">$next(400">$request);
    }
}

class=class="text-emerald-400">"text-gray">// Register in bootstrap/app.php:
class=class="text-emerald-400">"text-gray">// ->withMiddleware(function (Middleware 400">$middleware) {
class=class="text-emerald-400">"text-gray">//     400">$middleware->alias([class=class="text-emerald-400">"text-emerald-400">'role' => EnsureUserHasRole::class]);
class=class="text-emerald-400">"text-gray">// })
class=class="text-emerald-400">"text-gray">//
class=class="text-emerald-400">"text-gray">// Usage in routes:
class=class="text-emerald-400">"text-gray">// Route::get(class=class="text-emerald-400">"text-emerald-400">'/admin', AdminController::class)->middleware(class=class="text-emerald-400">"text-emerald-400">'role:admin,editor');

Nasıl Kullanılır

Middleware takma adını bootstrap/app.php'de kaydedin. Route'lara ->middleware('role:admin,editor') ile uygulayın. Birden fazla rolü argüman olarak kabul eder ve yetkisiz kullanıcılar için 403 döndürür.

İlgili Teknoloji

Laravel

Aklınızda Bir Proje mi Var?

Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.

veya ücretsiz görüşme ayarlayın