diff --git a/routes/web.php b/routes/web.php index f76baeb..07705e1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,39 +2,54 @@ declare(strict_types=1); +use App\Enums\DefaultUserRole; +use App\Enums\Permissions\{AccessManager, Apps}; use App\Http\Controllers\ResolveDashboardRouteController; use Illuminate\Support\Facades\Route; +use Spatie\Permission\Middleware\{PermissionMiddleware, RoleMiddleware}; Route::view('/', 'welcome')->name('home'); Route::group(['middleware' => ['auth', 'verified']], function (): void { Route::get('dashboard', ResolveDashboardRouteController::class)->name('dashboard'); Route::prefix('dashboard')->name('dashboard.')->group(function (): void { - Route::livewire('/user', 'pages::dashboards.user')->name('user'); - Route::livewire('admin', 'pages::dashboards.admin')->name('admin'); + Route::livewire('/user', 'pages::dashboards.user') + ->middleware(RoleMiddleware::using(DefaultUserRole::User)) + ->name('user'); + Route::livewire('admin', 'pages::dashboards.admin') + ->middleware(RoleMiddleware::using(DefaultUserRole::Admin)) + ->name('admin'); }); Route::prefix('access-manager')->name('access-manager.')->group(function (): void { - Route::prefix('roles-and-apps')->name('roles-and-apps.')->group(function (): void { - Route::livewire('roles-and-apps', 'pages::access-manager.roles-and-apps.index')->name('index'); - Route::livewire('roles-and-apps/{id}', 'pages::access-manager.roles-and-apps.show')->name('show'); - }); + Route::prefix('roles-and-apps')->name('roles-and-apps.') + ->middleware(PermissionMiddleware::using(AccessManager::RoleAndApps)) + ->group(function (): void { + Route::livewire('roles-and-apps', 'pages::access-manager.roles-and-apps.index')->name('index'); + Route::livewire('roles-and-apps/{id}', 'pages::access-manager.roles-and-apps.show')->name('show'); + }); - Route::prefix('users')->name('users.')->group(function (): void { - Route::livewire('users', 'pages::access-manager.users.index')->name('index'); - }); + Route::prefix('users')->name('users.') + ->middleware(PermissionMiddleware::using(AccessManager::Users)) + ->group(function (): void { + Route::livewire('users', 'pages::access-manager.users.index')->name('index'); + }); }); Route::prefix('apps')->name('apps.')->group(function (): void { - Route::livewire('create', 'pages::connected-apps.create')->name('create'); - Route::livewire('{id}/edit', 'pages::connected-apps.edit')->name('edit'); - Route::livewire('/', 'pages::connected-apps.index')->name('index'); - - Route::prefix('connection-providers')->name('connectionProviders.')->group(function (): void { - Route::livewire('create', 'pages::connecton-providers.create')->name('create'); - Route::livewire('{slug}/edit', 'pages::connecton-providers.edit')->name('edit'); - Route::livewire('index', 'pages::connecton-providers.index')->name('index'); + Route::middleware(PermissionMiddleware::using(Apps::AllApps))->group(function (): void { + Route::livewire('create', 'pages::connected-apps.create')->name('create'); + Route::livewire('{id}/edit', 'pages::connected-apps.edit')->name('edit'); + Route::livewire('/', 'pages::connected-apps.index')->name('index'); }); + + Route::prefix('connection-providers')->name('connectionProviders.') + ->middleware(PermissionMiddleware::using(Apps::Providers)) + ->group(function (): void { + Route::livewire('create', 'pages::connecton-providers.create')->name('create'); + Route::livewire('{slug}/edit', 'pages::connecton-providers.edit')->name('edit'); + Route::livewire('index', 'pages::connecton-providers.index')->name('index'); + }); }); });