From a932a030ada41c55b004d30fc1300989005a9b84 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 7 Apr 2026 08:47:20 +0700 Subject: [PATCH] feat: implement Share:Assignment permission and restrict action visibility accordingly --- .../Learning/Assignments/Actions/ShareAssignmentAction.php | 1 + app/Policies/AssignmentPolicy.php | 5 +++++ database/seeders/ShieldSeeder.php | 2 ++ .../filament/resources/learning/assignments/index.blade.php | 4 +++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/Learning/Assignments/Actions/ShareAssignmentAction.php b/app/Filament/Resources/Learning/Assignments/Actions/ShareAssignmentAction.php index 1baf4e6..e16f968 100644 --- a/app/Filament/Resources/Learning/Assignments/Actions/ShareAssignmentAction.php +++ b/app/Filament/Resources/Learning/Assignments/Actions/ShareAssignmentAction.php @@ -19,6 +19,7 @@ protected function setUp(): void parent::setUp(); $this->label('Bagikan Tugas') + ->visible(fn () => auth()->user()->can('Share:Assignment')) ->icon('heroicon-o-paper-airplane') ->color(Color::Fuchsia) ->link() diff --git a/app/Policies/AssignmentPolicy.php b/app/Policies/AssignmentPolicy.php index a527d32..779a6bb 100644 --- a/app/Policies/AssignmentPolicy.php +++ b/app/Policies/AssignmentPolicy.php @@ -66,4 +66,9 @@ public function reorder(AuthUser $authUser): bool { return $authUser->can('Reorder:Assignment'); } + + public function share(AuthUser $authUser, Assignment $assignment): bool + { + return $authUser->can('Share:Assignment'); + } } diff --git a/database/seeders/ShieldSeeder.php b/database/seeders/ShieldSeeder.php index 50e534c..aa4627c 100644 --- a/database/seeders/ShieldSeeder.php +++ b/database/seeders/ShieldSeeder.php @@ -36,6 +36,7 @@ public function run(): void "Reorder:Assignment", "Restore:Assignment", "RestoreAny:Assignment", + "Share:Assignment", "Update:Assignment", "View:Assignment", "ViewAny:Assignment", @@ -186,6 +187,7 @@ public function run(): void "ForceDeleteAny:Assignment", "Restore:Assignment", "RestoreAny:Assignment", + "Share:Assignment", "Update:Assignment", "View:Assignment", "ViewAny:Assignment", diff --git a/resources/views/filament/resources/learning/assignments/index.blade.php b/resources/views/filament/resources/learning/assignments/index.blade.php index 48c9b8e..cc88264 100644 --- a/resources/views/filament/resources/learning/assignments/index.blade.php +++ b/resources/views/filament/resources/learning/assignments/index.blade.php @@ -86,7 +86,9 @@ class="flex items-center gap-1.5 text-success-600 dark:text-success-400 font-bol
{{ ($this->pinAction)(['record' => $card->id]) }} - {{ ($this->shareAssignmentAction)(['record' => $card->id]) }} + @can('Share:Assignment') + {{ ($this->shareAssignmentAction)(['record' => $card->id]) }} + @endcan @canAny(['Update:Assignment', 'Delete:Assignment']) {{ ($this->editAssignmentAction)(['record' => $card->id]) }}