From 33cc617a3f9f0fe0a31027aea4fce6c607a8ddd8 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 12 Mar 2026 09:01:00 +0700 Subject: [PATCH] feat: Integrate HasPageShield trait for enhanced authorization in CourseSchedule, StudyGroup, and ManageSettings pages, including permission methods for access control. --- app/Filament/Pages/Information/CourseSchedule/Index.php | 3 ++- app/Filament/Pages/Learning/StudyGroup/Index.php | 8 +++++++- app/Filament/Pages/System/ManageSettings.php | 8 ++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Filament/Pages/Information/CourseSchedule/Index.php b/app/Filament/Pages/Information/CourseSchedule/Index.php index 2a2345c..2c54674 100644 --- a/app/Filament/Pages/Information/CourseSchedule/Index.php +++ b/app/Filament/Pages/Information/CourseSchedule/Index.php @@ -9,6 +9,7 @@ use App\Models\CourseSchedule; use App\Settings\GeneralSettings; use BackedEnum; +use BezhanSalleh\FilamentShield\Traits\HasPageShield; use Filament\Actions\Action; use Filament\Actions\Concerns\InteractsWithActions; use Filament\Actions\Contracts\HasActions; @@ -26,7 +27,7 @@ class Index extends Page implements HasActions, HasForms { - use InteractsWithActions, InteractsWithForms; + use HasPageShield, InteractsWithActions, InteractsWithForms; protected static ?string $model = CourseSchedule::class; diff --git a/app/Filament/Pages/Learning/StudyGroup/Index.php b/app/Filament/Pages/Learning/StudyGroup/Index.php index 3c222c2..9ebce52 100644 --- a/app/Filament/Pages/Learning/StudyGroup/Index.php +++ b/app/Filament/Pages/Learning/StudyGroup/Index.php @@ -10,6 +10,7 @@ use App\Models\StudyGroup; use App\Settings\GeneralSettings; use BackedEnum; +use BezhanSalleh\FilamentShield\Traits\HasPageShield; use Filament\Actions\Action; use Filament\Actions\Concerns\InteractsWithActions; use Filament\Actions\Contracts\HasActions; @@ -28,7 +29,7 @@ class Index extends Page implements HasActions, HasForms { - use InteractsWithActions, InteractsWithForms; + use HasPageShield, InteractsWithActions, InteractsWithForms; protected static ?string $model = StudyGroup::class; @@ -42,6 +43,11 @@ class Index extends Page implements HasActions, HasForms protected static ?string $slug = 'learning/study-groups'; + public static function getPagePermission(): string + { + return 'View:StudyGroup'; + } + protected string $view = 'filament.pages.information.list-study-groups'; public ?int $course_id = null; diff --git a/app/Filament/Pages/System/ManageSettings.php b/app/Filament/Pages/System/ManageSettings.php index 8b42f4f..be7177f 100644 --- a/app/Filament/Pages/System/ManageSettings.php +++ b/app/Filament/Pages/System/ManageSettings.php @@ -5,6 +5,7 @@ use App\Filament\Support\SystemNotification; use App\Settings\GeneralSettings; use BackedEnum; +use BezhanSalleh\FilamentShield\Traits\HasPageShield; use Filament\Forms\Components\Select; use Filament\Notifications\Notification; use Filament\Pages\SettingsPage; @@ -15,6 +16,8 @@ class ManageSettings extends SettingsPage { + use HasPageShield; + protected static string|UnitEnum|null $navigationGroup = 'Sistem'; protected static string|BackedEnum|null $navigationIcon = Heroicon::OutlinedCog6Tooth; @@ -25,6 +28,11 @@ class ManageSettings extends SettingsPage protected static ?string $slug = 'system/settings'; + public static function getPagePermission(): string + { + return 'View:ManageSettings'; + } + protected static ?int $navigationSort = 10; protected static string $settings = GeneralSettings::class;