refactor: Replace hardcoded role checks with RoleEnum for consistency across cooperation and journalist actions

This commit is contained in:
Yoga Pangestu 2026-01-19 10:48:44 +07:00
parent b522b4ff6f
commit 3ba104c1a1
19 changed files with 45 additions and 31 deletions

View File

@ -4,6 +4,7 @@
use App\Enums\MediaClassification;
use App\Enums\MediaType;
use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification;
use App\Models\Company;
use App\Models\PartnerMedia;
@ -56,7 +57,7 @@ class Media extends Page
public function mount(): void
{
if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company) {
$this->restricted = true;
return;

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
@ -55,10 +56,9 @@ protected function setUp(): void
}
})
->visible(function (Cooperation $record): bool {
$user = auth()->user();
if (! $user || ! $user->hasRole('Perusahaan')) {
if (! $user || ! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return false;
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation;
use App\Enums\CooperationStatus;
use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
use Filament\Actions\Action;
@ -65,7 +66,7 @@ protected function setUp(): void
->visible(function (Cooperation $record): bool {
$user = auth()->user();
return $user && ! $user->hasRole('Perusahaan')
return $user && ! $user->hasRole(RoleEnum::PERUSAHAAN->value)
&& $record->status === CooperationStatus::PAYMENT;
});
}

View File

@ -4,6 +4,7 @@
use App\Enums\ApprovalStatus;
use App\Enums\CooperationStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
@ -102,7 +103,7 @@ protected function setUp(): void
->visible(function (Cooperation $record): bool {
$user = auth()->user();
return $user && ! $user->hasRole('Perusahaan')
return $user && ! $user->hasRole(RoleEnum::PERUSAHAAN->value)
&& ! $record->taskAssignment()->exists()
&& $record->status === CooperationStatus::ASSIGNMENT;
})

View File

@ -4,6 +4,7 @@
use App\Enums\ApprovalStatus;
use App\Enums\CooperationStatus;
use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
use Filament\Actions\Action;
@ -32,7 +33,7 @@ protected function setUp(): void
->visible(function (Cooperation $record): bool {
$user = auth()->user();
if (! $user || $user->hasRole('Perusahaan') || $record->status !== CooperationStatus::VERIFICATION) {
if (! $user || $user->hasRole(RoleEnum::PERUSAHAAN->value) || $record->status !== CooperationStatus::VERIFICATION) {
return false;
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
use App\Models\User;
@ -50,7 +51,7 @@ protected function setUp(): void
->visible(function (Cooperation $record): bool {
$user = auth()->user();
if (! $user || ! $user->hasRole('Perusahaan')) {
if (! $user || ! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return false;
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Cooperation;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Filament\Support\CheerfulNotification;
use App\Models\Cooperation;
@ -119,7 +120,7 @@ protected function setUp(): void
->visible(function (Cooperation $record): bool {
$user = auth()->user();
if (! $user->hasRole('Perusahaan')) {
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return false;
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Proposal;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Models\CooperationProposal;
use App\Models\User;
@ -46,6 +47,6 @@ protected function setUp(): void
]));
}
})
->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole('Perusahaan') && $record->status === ApprovalStatus::PENDING);
->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING);
}
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Actions\Proposal;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use App\Models\CooperationProposal;
use App\Models\User;
@ -56,7 +57,7 @@ protected function setUp(): void
]));
}
})
->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole('Perusahaan') && $record->status === ApprovalStatus::PENDING)
->visible(fn (CooperationProposal $record): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING)
->modalWidth(Width::Large);
}
}

View File

@ -66,7 +66,7 @@ public static function table(Table $table): Table
{
return CooperationsTable::configure($table)
->modifyQueryUsing(function (Builder $query): Builder {
if (auth()->user()->hasRole('Perusahaan')) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
$query->whereHas('cooperationMedia', function (Builder $subQuery): void {
$subQuery->whereHas('partnerMedia', function (Builder $mediaQuery): void {
$mediaQuery->whereHas('company', function (Builder $companyQuery): void {

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Pages;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\CooperationResource;
use Filament\Actions\CreateAction;
use Filament\Resources\Pages\ListRecords;
@ -16,7 +17,7 @@ protected function getHeaderActions(): array
{
$actions = [];
if (! auth()->user()->hasRole('Perusahaan')) {
if (! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
$actions[] = CreateAction::make()
->label('Tambah');
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\RelationManagers;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Resources\Manage\Cooperations\Actions\Media\PayAction;
use App\Models\CooperationMedia;
use Filament\Actions\ViewAction;
@ -23,7 +24,7 @@ class CooperationMediaRelationManager extends RelationManager
public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool
{
return ! auth()->user()->hasRole('Perusahaan');
return auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value);
}
public static function getBadge(Model $ownerRecord, string $pageClass): ?string

View File

@ -44,7 +44,7 @@ public static function canViewForRecord(Model $ownerRecord, string $pageClass):
public static function getBadge(Model $ownerRecord, string $pageClass): ?string
{
if (auth()->user()->hasRole('Perusahaan')) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
return null;
}
@ -59,7 +59,7 @@ public function table(Table $table): Table
TextColumn::make('partnerMedia.name')
->label('Media')
->searchable()
->visible(! auth()->user()->hasRole('Perusahaan')),
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
TextColumn::make('e_catalog')
->label('E-Catalog')
@ -111,7 +111,7 @@ public function table(Table $table): Table
->modifyQueryUsing(function ($query) {
$user = auth()->user();
if (! $user->hasRole('Perusahaan')) {
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return $query;
}
@ -129,7 +129,7 @@ public function infolist(Schema $infolist): Schema
->schema([
TextEntry::make('partnerMedia.name')
->label('Media')
->visible(! auth()->user()->hasRole('Perusahaan')),
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
TextEntry::make('status')
->label('Status')

View File

@ -171,7 +171,7 @@ public function table(Table $table): Table
->visible(function (): bool {
$user = auth()->user();
if (! $user || ! $user->hasRole('Perusahaan')) {
if (! $user || ! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return false;
}

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources\Manage\Cooperations\Tables;
use App\Enums\ApprovalStatus;
use App\Enums\RoleEnum;
use App\Filament\Actions\Cheerful\DeleteAction;
use App\Filament\Actions\Cheerful\EditAction;
use App\Filament\Actions\DefaultBulkActions;
@ -41,7 +42,7 @@ public static function configure(Table $table): Table
->limitList(3)
->expandableLimitedList()
->badge()
->visible(! auth()->user()->hasRole('Perusahaan')),
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
TextColumn::make('initial_submission_date')
->label('Tgl Pengajuan Awal')
@ -85,12 +86,12 @@ public static function configure(Table $table): Table
Belum Menanggapi: {$record->pending_count}<br>
Total: {$totalCount}";
})
->visible(! auth()->user()->hasRole('Perusahaan')),
->visible(! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
TextColumn::make('status_tanggapan')
->label('Tanggapan')
->getStateUsing(function (Cooperation $record): ?ApprovalStatus {
if (auth()->user()->hasRole('Perusahaan')) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
$cooperationMedia = $record->cooperationMedia()
->whereHas('partnerMedia', function (Builder $query): void {
$query->whereHas('company', function (Builder $subQuery): void {
@ -105,7 +106,7 @@ public static function configure(Table $table): Table
return null;
})
->badge()
->visible(auth()->user()->hasRole('Perusahaan')),
->visible(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
TextColumn::make('payment_amount')
->label('Jumlah Pembayaran')
@ -149,10 +150,10 @@ public static function configure(Table $table): Table
CompleteCooperationAction::make('completeCooperation'),
EditAction::make()
->visible(fn (): bool => ! auth()->user()->hasRole('Perusahaan')),
->visible(fn (): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
DeleteAction::make()
->visible(fn (): bool => ! auth()->user()->hasRole('Perusahaan')),
->visible(fn (): bool => ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)),
])
->toolbarActions([
BulkActionGroup::make([

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Journalists\Actions;
use App\Enums\RoleEnum;
use App\Enums\VerificationStatus;
use App\Filament\Support\CheerfulNotification;
use Filament\Actions\DeleteAction;
@ -20,7 +21,7 @@ protected function setUp(): void
$user = auth()->user();
if (! $user->hasRole('Perusahaan')) {
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return true;
}

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Journalists\Actions;
use App\Enums\RoleEnum;
use App\Enums\VerificationStatus;
use App\Filament\Support\CheerfulNotification;
use App\Models\Journalist;
@ -93,10 +94,9 @@ protected function setUp(): void
return $record;
})
->visible(function (): bool {
$user = auth()->user();
if (! $user->hasRole('Perusahaan')) {
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
return true;
}

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Journalists;
use App\Enums\RoleEnum;
use App\Filament\Actions\Cheerful\ForceDeleteAction;
use App\Filament\Actions\Cheerful\RestoreAction;
use App\Filament\Columns\TimestampColumns;
@ -187,17 +188,17 @@ public static function table(Table $table): Table
->defaultSort('created_at', 'desc')
->deferFilters(false)
->modifyQueryUsing(function (Builder $query): void {
if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia) {
$query->whereRaw('1 = 0');
}
$query->when(auth()->user()->hasRole('Perusahaan'), function (Builder $q): Builder {
$query->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $q): Builder {
return $q->whereHas('partnerMedia.company', function (Builder $q): void {
$q->where('user_id', auth()->id());
});
});
})
->when(auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia, function (Table $table): Table {
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia, function (Table $table): Table {
return $table
->emptyStateHeading('Akses Dibatasi')
->emptyStateDescription('Mohon lengkapi data Media Anda terlebih dahulu.')

View File

@ -2,6 +2,7 @@
namespace App\Filament\Resources\Manage\Journalists\Pages;
use App\Enums\RoleEnum;
use App\Enums\VerificationStatus;
use App\Filament\Actions\Cheerful\CreateAction;
use App\Filament\Resources\Manage\Journalists\JournalistResource;
@ -18,7 +19,7 @@ class ManageJournalists extends ManageRecords
protected function getHeaderActions(): array
{
if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia) {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia) {
return [];
}