أذونات طرق مدعومة بـ Enum في Laravel
قَدَّمَ إطار عمل Laravel تبسيطًا للتحقق من التصريحات في المسارات بإضافة دعم مباشر لقوائم التعداد (Enums) إلى طريقة can().
تتألق هذه الميزة بشكل خاص عند بناء لوحات التحكم الإدارية أو التطبيقات متعددة المستأجرين، حيث يكون إدارة الصلاحيات أمرًا ضروريًا، كما أنها تتيح لك الاستفادة من ميزات أمان الأنواع (Type Safety) في PHP.
Route::get('/admin', function () { // ...})->can(Permission::ACCESS_ADMIN);
فيما يلي كيفية تنفيذ التوجيه القائم على الأدوار في لوحة تحكم المسؤولين:
// app/Enums/AdminAccess.php <?php namespace App\Enums; enum AdminAccess: string{ case VIEW_REPORTS = 'view_reports'; case MANAGE_STAFF = 'manage_staff'; case EDIT_CONFIG = 'edit_config';} // web.phpRoute::prefix('admin')->group(function () { Route::get('/reports', ReportController::class) ->can(AdminAccess::VIEW_REPORTS); Route::get('/staff', StaffController::class) ->can(AdminAccess::MANAGE_STAFF); Route::post('/config', ConfigController::class) ->can(AdminAccess::EDIT_CONFIG);});
تصبح تعريفات المسارات أكثر سهولة في الفهم والصيانة:
// Previous approach->can(AdminAccess::MANAGE_STAFF->value)// New, cleaner approach->can(AdminAccess::MANAGE_STAFF)
تُحسّن طريقة can() المُحسّنة توجيهك القائم على الأذونات بشكل أنيق مع الحفاظ على فوائد نظام أنواع PHP.