السماح بتمرير معاملات (Parameters) للـ Middleare
أصبح استخدام الـ middleware أكثر قوة، بالسماح بتمرير معاملات (Parameters).
هذه الميزة مفيدة للغاية و بشكل خاص لصلاحيات المستخدمين، أو السماح بوضع حدود للمستخدمين.
namespace App\Http\Middleware; use Closure;use Illuminate\Http\Request; class EnsureUserHasRole{ public function handle(Request $request, Closure $next, string ...$roles) { if (!$request->user()?->hasAnyRole($roles)) { return response()->json([ 'error' => 'Insufficient permissions' ], 403); } return $next($request); }}
دعونا نستكشف كيفية تنفيذ حماية المسار القائم على صلاحيات المستخدمين:
use App\Http\Controllers\PostController;use App\Http\Middleware\EnsureUserHasRole; Route::prefix('posts')->group(function () { // Public routes Route::get('/', [PostController::class, 'index']); // Editor routes Route::put('/{id}', [PostController::class, 'update']) ->middleware(EnsureUserHasRole::class . ':editor'); Route::post('/', [PostController::class, 'store']) ->middleware(EnsureUserHasRole::class . ':editor'); // Admin routes Route::delete('/{id}', [PostController::class, 'destroy']) ->middleware(EnsureUserHasRole::class . ':admin');});
توفر هذه طريقة نظيفة مع اﻹبقاء على الـ controllers و الـ models الخاصة بك بدون تغيير