From fbb0f92b37b819d8040d528c992c6a31de7901e8 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sat, 11 Apr 2026 15:02:13 +0700 Subject: [PATCH] refactor: restrict action visibility to administrator and developer roles across cooperation and report modules --- .../Actions/Cooperation/CompleteCooperationAction.php | 7 +------ .../Manage/Cooperations/Actions/Proposal/AcceptAction.php | 2 +- .../Manage/Cooperations/Actions/Proposal/RejectAction.php | 2 +- .../Manage/Cooperations/Actions/Report/AcceptAction.php | 2 +- .../Actions/Report/ExportAllReportsPdfAction.php | 4 +++- .../Cooperations/Actions/Report/ExportReportPdfAction.php | 4 +++- .../Manage/Cooperations/Actions/Report/RejectAction.php | 2 +- .../Manage/Cooperations/Pages/ListCooperations.php | 4 ++-- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php index ed50224..036dd7d 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Cooperation/CompleteCooperationAction.php @@ -7,10 +7,8 @@ use App\Enums\RoleEnum; use App\Filament\Support\CheerfulNotification; use App\Models\Cooperation; -use App\Models\User; use Filament\Actions\Action; use Filament\Support\Icons\Heroicon; -use Illuminate\Support\Facades\Auth; class CompleteCooperationAction extends Action { @@ -98,10 +96,7 @@ protected function setUp(): void )->send(); }) ->visible(function (Cooperation $record): bool { - /** @var User $user */ - $user = Auth::user(); - - return $user && ! $user->hasRole(RoleEnum::PERUSAHAAN->value) + return auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]) && $record->status === CooperationStatus::PAYMENT; }); } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php index e0ea46b..f95a262 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/AcceptAction.php @@ -54,6 +54,6 @@ protected function setUp(): void ])); } }) - ->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING); + ->visible(fn (CooperationProposal $record): bool => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]) && $record->status === ApprovalStatus::PENDING); } } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php index 346d5fb..9cddc16 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Proposal/RejectAction.php @@ -63,7 +63,7 @@ protected function setUp(): void ])); } }) - ->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING) + ->visible(fn (CooperationProposal $record): bool => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]) && $record->status === ApprovalStatus::PENDING) ->modalWidth(Width::Large); } } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php index a09b13f..5bd4711 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/AcceptAction.php @@ -51,7 +51,7 @@ protected function setUp(): void }) ->visible( fn (Report $record): bool => $record->mediaTaskAssignment?->taskAssignment?->cooperation?->status === CooperationStatus::ASSIGNMENT && - ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && + auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]) && $record->status === ApprovalStatus::PENDING ); } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportAllReportsPdfAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportAllReportsPdfAction.php index 7303af9..56847fa 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportAllReportsPdfAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportAllReportsPdfAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Manage\Cooperations\Actions\Report; +use App\Enums\RoleEnum; use App\Settings\GeneralSettings; use Barryvdh\DomPDF\Facade\Pdf; use Filament\Actions\Action; @@ -54,6 +55,7 @@ protected function setUp(): void ]) )->output(); }, 'rekap-bukti-tayang.pdf'); - }); + }) + ->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])); } } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportReportPdfAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportReportPdfAction.php index 8a7f488..c84110c 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportReportPdfAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/ExportReportPdfAction.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Manage\Cooperations\Actions\Report; +use App\Enums\RoleEnum; use App\Models\Report; use App\Settings\GeneralSettings; use Barryvdh\DomPDF\Facade\Pdf; @@ -53,6 +54,7 @@ protected function setUp(): void ]) )->output(); }, str($record->title)->slug().'.pdf'); - }); + }) + ->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])); } } diff --git a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php index 6c917e8..3aa72f0 100644 --- a/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php +++ b/app/Filament/Resources/Manage/Cooperations/Actions/Report/RejectAction.php @@ -63,7 +63,7 @@ protected function setUp(): void }) ->visible( fn (Report $record): bool => $record->mediaTaskAssignment?->taskAssignment?->cooperation?->status === CooperationStatus::ASSIGNMENT && - ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && + auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]) && $record->status === ApprovalStatus::PENDING ) ->modalWidth(Width::Large); diff --git a/app/Filament/Resources/Manage/Cooperations/Pages/ListCooperations.php b/app/Filament/Resources/Manage/Cooperations/Pages/ListCooperations.php index 534c726..a95892a 100644 --- a/app/Filament/Resources/Manage/Cooperations/Pages/ListCooperations.php +++ b/app/Filament/Resources/Manage/Cooperations/Pages/ListCooperations.php @@ -20,7 +20,7 @@ protected function getHeaderActions(): array return [ CreateAction::make() ->label('Tambah') - ->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)), + ->visible(auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])), ExportAction::make() ->exports([ @@ -28,7 +28,7 @@ protected function getHeaderActions(): array ]) ->color('success') ->icon(null) - ->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)), + ->visible(auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])), ]; } }