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 birlikte hayata geçirelim. 50+ teslim edilmiş projeyle sizi konseptten yayına hazır bir ürüne taşıyor; sabit fiyatlı tekliflerle özel yazılım geliştirme sunuyoruz. Hiçbir taahhüt olmadan ücretsiz danışmanlık alın.

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