السماح بتمرير معاملات (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 الخاصة بك بدون تغيير

جميع الحقوق محفوظة © 2025 Laravel | عربي