- Replaced `AccessManager`, `Apps`, and `Settings` enums with modular enums like `RoleAndAppsPermissionEnum`, `AppPermissionEnum`, etc. - Updated route, view, Livewire components, and tests to use new modular enums. - Enhanced `DefaultRoleWithPermissionSeeder` and `PermissionSeeder` with updated enums. - Added README in the Enums/Permissions directory to explain usage and naming conventions. - Refactored dashboard sidebar and route definitions for better enum-based permission handling. - Improved test coverage to validate new permission enums functionality.
44 lines
1.5 KiB
PHP
44 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Enums\Permissions\{ProfilePermissionEnum, SecurityPermissionEnum};
|
|
use App\Livewire\Settings\{Appearance, Profile, Security};
|
|
use Illuminate\Support\Facades\Route;
|
|
use Laravel\Fortify\Features;
|
|
use Spatie\Permission\Middleware\PermissionMiddleware;
|
|
|
|
// Grouping by the "Settings" sidebar category
|
|
Route::middleware(['auth'])->prefix('settings')->group(function (): void {
|
|
|
|
// Base settings redirect
|
|
Route::redirect('/', '/settings/profile')->name('settings');
|
|
|
|
// Profile Settings
|
|
Route::livewire('profile', Profile::class)
|
|
->middleware(PermissionMiddleware::using(ProfilePermissionEnum::Access))
|
|
->name('profile.edit');
|
|
|
|
// Settings that require email verification
|
|
Route::middleware(['verified'])->group(function (): void {
|
|
|
|
// Appearance Settings
|
|
Route::livewire('appearance', Appearance::class)->name('appearance.edit');
|
|
|
|
// Security Settings
|
|
Route::livewire('security', Security::class)
|
|
->middleware(
|
|
array_merge(
|
|
[PermissionMiddleware::using(SecurityPermissionEnum::Access)],
|
|
when(
|
|
Features::canManageTwoFactorAuthentication()
|
|
&& Features::optionEnabled(Features::twoFactorAuthentication(), 'confirmPassword'),
|
|
['password.confirm'],
|
|
[],
|
|
),
|
|
)
|
|
)
|
|
->name('security.edit');
|
|
});
|
|
});
|