feat: pindahkan custom permission ke config/filament-shield.php

This commit is contained in:
2026-04-04 10:53:15 +07:00
parent d3d7c6e422
commit 77e19cbb00
4 changed files with 93 additions and 5 deletions
-3
View File
@@ -19,9 +19,6 @@ class ActivityPolicy
public function view(AuthUser $authUser, Activity $activity): bool
{
if ($activity->status === 'draft' && $activity->created_by !== $authUser->id) {
return $authUser->can('ViewDraft:Activity');
}
return $authUser->can('View:Activity');
}
+75
View File
@@ -0,0 +1,75 @@
<?php
declare(strict_types=1);
namespace App\Policies;
use Illuminate\Foundation\Auth\User as AuthUser;
use App\Models\MemberPoint;
use Illuminate\Auth\Access\HandlesAuthorization;
class MemberPointPolicy
{
use HandlesAuthorization;
public function viewAny(AuthUser $authUser): bool
{
return $authUser->can('ViewAny:MemberPoint');
}
public function view(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('View:MemberPoint');
}
public function create(AuthUser $authUser): bool
{
return $authUser->can('Create:MemberPoint');
}
public function update(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('Update:MemberPoint');
}
public function delete(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('Delete:MemberPoint');
}
public function deleteAny(AuthUser $authUser): bool
{
return $authUser->can('DeleteAny:MemberPoint');
}
public function restore(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('Restore:MemberPoint');
}
public function forceDelete(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('ForceDelete:MemberPoint');
}
public function forceDeleteAny(AuthUser $authUser): bool
{
return $authUser->can('ForceDeleteAny:MemberPoint');
}
public function restoreAny(AuthUser $authUser): bool
{
return $authUser->can('RestoreAny:MemberPoint');
}
public function replicate(AuthUser $authUser, MemberPoint $memberPoint): bool
{
return $authUser->can('Replicate:MemberPoint');
}
public function reorder(AuthUser $authUser): bool
{
return $authUser->can('Reorder:MemberPoint');
}
}
+14
View File
@@ -264,4 +264,18 @@ return [
'register_role_policy' => true,
/*
|--------------------------------------------------------------------------
| Custom Permissions
|--------------------------------------------------------------------------
|
| Permission tambahan di luar yang di-generate Shield.
| Di-seed via PermissionSeeder dan di-assign ke role yang sesuai.
|
*/
'custom_permissions' => [
'ViewDraft:Activity', // Lihat kegiatan berstatus draft milik user lain (hanya super_admin)
],
];
+4 -2
View File
@@ -20,8 +20,10 @@ class PermissionSeeder extends Seeder
$superAdmin = Role::findByName('super_admin');
// Permission khusus yang tidak di-generate Shield
Permission::firstOrCreate(['name' => 'ViewDraft:Activity', 'guard_name' => 'web']);
$superAdmin->givePermissionTo('ViewDraft:Activity');
foreach (config('filament-shield.custom_permissions', []) as $permission) {
Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']);
}
$superAdmin->givePermissionTo(config('filament-shield.custom_permissions', []));
// Ketua: akses penuh kecuali shield roles
$ketua->syncPermissions(Permission::where('name', 'not like', '%Role%')