refactor: restrict action visibility to administrator and developer roles across cooperation and report modules

This commit is contained in:
Yoga Pangestu 2026-04-11 15:02:13 +07:00
parent 64f521adcc
commit fbb0f92b37
8 changed files with 13 additions and 14 deletions

View File

@ -7,10 +7,8 @@
use App\Enums\RoleEnum; use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification; use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation; use App\Models\Cooperation;
use App\Models\User;
use Filament\Actions\Action; use Filament\Actions\Action;
use Filament\Support\Icons\Heroicon; use Filament\Support\Icons\Heroicon;
use Illuminate\Support\Facades\Auth;
class CompleteCooperationAction extends Action class CompleteCooperationAction extends Action
{ {
@ -98,10 +96,7 @@ protected function setUp(): void
)->send(); )->send();
}) })
->visible(function (Cooperation $record): bool { ->visible(function (Cooperation $record): bool {
/** @var User $user */ return auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])
$user = Auth::user();
return $user && ! $user->hasRole(RoleEnum::PERUSAHAAN->value)
&& $record->status === CooperationStatus::PAYMENT; && $record->status === CooperationStatus::PAYMENT;
}); });
} }

View File

@ -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);
} }
} }

View File

@ -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); ->modalWidth(Width::Large);
} }
} }

View File

@ -51,7 +51,7 @@ protected function setUp(): void
}) })
->visible( ->visible(
fn (Report $record): bool => $record->mediaTaskAssignment?->taskAssignment?->cooperation?->status === CooperationStatus::ASSIGNMENT && 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 $record->status === ApprovalStatus::PENDING
); );
} }

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Report; namespace App\Filament\Resources\Manage\Cooperations\Actions\Report;
use App\Enums\RoleEnum;
use App\Settings\GeneralSettings; use App\Settings\GeneralSettings;
use Barryvdh\DomPDF\Facade\Pdf; use Barryvdh\DomPDF\Facade\Pdf;
use Filament\Actions\Action; use Filament\Actions\Action;
@ -54,6 +55,7 @@ protected function setUp(): void
]) ])
)->output(); )->output();
}, 'rekap-bukti-tayang.pdf'); }, 'rekap-bukti-tayang.pdf');
}); })
->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]));
} }
} }

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Report; namespace App\Filament\Resources\Manage\Cooperations\Actions\Report;
use App\Enums\RoleEnum;
use App\Models\Report; use App\Models\Report;
use App\Settings\GeneralSettings; use App\Settings\GeneralSettings;
use Barryvdh\DomPDF\Facade\Pdf; use Barryvdh\DomPDF\Facade\Pdf;
@ -53,6 +54,7 @@ protected function setUp(): void
]) ])
)->output(); )->output();
}, str($record->title)->slug().'.pdf'); }, str($record->title)->slug().'.pdf');
}); })
->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]));
} }
} }

View File

@ -63,7 +63,7 @@ protected function setUp(): void
}) })
->visible( ->visible(
fn (Report $record): bool => $record->mediaTaskAssignment?->taskAssignment?->cooperation?->status === CooperationStatus::ASSIGNMENT && 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 $record->status === ApprovalStatus::PENDING
) )
->modalWidth(Width::Large); ->modalWidth(Width::Large);

View File

@ -20,7 +20,7 @@ protected function getHeaderActions(): array
return [ return [
CreateAction::make() CreateAction::make()
->label('Tambah') ->label('Tambah')
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)), ->visible(auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])),
ExportAction::make() ExportAction::make()
->exports([ ->exports([
@ -28,7 +28,7 @@ protected function getHeaderActions(): array
]) ])
->color('success') ->color('success')
->icon(null) ->icon(null)
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)), ->visible(auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value])),
]; ];
} }
} }