Laravel спростив перевірку дозволів у маршрутах, додавши пряму підтримку enum до методу can(). Це нововведення усуває необхідність явно отримувати значення enum, що робить визначення маршрутів більш зрозумілими і виразними.
Ця функція особливо корисна при створенні адмін-панелей або багатокористувацьких додатків, де управління дозволами є важливим, і ви хочете використовувати можливості типобезпечності 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.php
Route::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);
});
Визначення маршрутів стали інтуїтивно зрозумілішими та легшими для супроводження:
// Попередній підхід
->can(AdminAccess::MANAGE_STAFF->value)
// Новий, чистіший підхід
->can(AdminAccess::MANAGE_STAFF)
Покращений метод can() робить маршрути на основі дозволів більш елегантними, зберігаючи переваги типізаційності PHP