From a7bcc39a0c027385cdf7fe2eda1d1200e7e360c5 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Mon, 16 Feb 2026 13:44:12 +0000 Subject: [PATCH 1/2] Add and enforce permissions --- ...02_16_100000_add_can_manage_permission.php | 21 +++++++++++++++++++ .../ShippingExclusionListResource.php | 1 + .../Resources/ShippingMethodResource.php | 1 + .../Resources/ShippingZoneResource.php | 4 +++- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2026_02_16_100000_add_can_manage_permission.php diff --git a/database/migrations/2026_02_16_100000_add_can_manage_permission.php b/database/migrations/2026_02_16_100000_add_can_manage_permission.php new file mode 100644 index 0000000..7cec664 --- /dev/null +++ b/database/migrations/2026_02_16_100000_add_can_manage_permission.php @@ -0,0 +1,21 @@ + 'shipping:manage', + 'guard_name' => 'staff', + ]); + } + + public function down() + { + \Spatie\Permission\Models\Permission::query()->where('name', 'shipping:manage')->delete(); + } +} diff --git a/src/Filament/Resources/ShippingExclusionListResource.php b/src/Filament/Resources/ShippingExclusionListResource.php index 70fc509..1559726 100644 --- a/src/Filament/Resources/ShippingExclusionListResource.php +++ b/src/Filament/Resources/ShippingExclusionListResource.php @@ -18,6 +18,7 @@ class ShippingExclusionListResource extends BaseResource { protected static ?string $model = ShippingExclusionList::class; + protected static ?int $navigationSort = 1; protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::End; diff --git a/src/Filament/Resources/ShippingMethodResource.php b/src/Filament/Resources/ShippingMethodResource.php index 8c806dd..a9c4b45 100644 --- a/src/Filament/Resources/ShippingMethodResource.php +++ b/src/Filament/Resources/ShippingMethodResource.php @@ -19,6 +19,7 @@ class ShippingMethodResource extends BaseResource { protected static ?string $model = ShippingMethod::class; + protected static ?string $permission = 'shipping:manage'; protected static ?int $navigationSort = 1; protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::End; diff --git a/src/Filament/Resources/ShippingZoneResource.php b/src/Filament/Resources/ShippingZoneResource.php index 91ecc3e..9fea61a 100644 --- a/src/Filament/Resources/ShippingZoneResource.php +++ b/src/Filament/Resources/ShippingZoneResource.php @@ -23,7 +23,9 @@ class ShippingZoneResource extends BaseResource { protected static ?string $model = ShippingZone::class; - protected static ?int $navigationSort = 1; + protected static ?string $permission = 'shipping:manage'; + + protected $permission protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::End; From 943011a7cfa9cbf052f937afe8fc50c9d5741113 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Mon, 16 Feb 2026 13:46:43 +0000 Subject: [PATCH 2/2] follow conventions --- ...02_16_100000_add_can_manage_permission.php | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/database/migrations/2026_02_16_100000_add_can_manage_permission.php b/database/migrations/2026_02_16_100000_add_can_manage_permission.php index 7cec664..359c491 100644 --- a/database/migrations/2026_02_16_100000_add_can_manage_permission.php +++ b/database/migrations/2026_02_16_100000_add_can_manage_permission.php @@ -2,20 +2,36 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Lunar\Admin\Support\Facades\LunarPanel; use Lunar\Base\Migration; +use Spatie\Permission\Models\Permission; class AddCanManagePermission extends Migration { public function up() { - \Spatie\Permission\Models\Permission::insert([ + $guard = LunarPanel::getPanel()->getAuthGuard(); + + $tableNames = config('permission.table_names'); + + if (! Schema::hasTable($tableNames['permissions'])) { + return; + } + + Permission::firstOrCreate([ 'name' => 'shipping:manage', - 'guard_name' => 'staff', + 'guard_name' => $guard, ]); } public function down() { - \Spatie\Permission\Models\Permission::query()->where('name', 'shipping:manage')->delete(); + $tableNames = config('permission.table_names'); + + if (! Schema::hasTable($tableNames['permissions'])) { + return; + } + + Permission::query()->where('name', 'shipping:manage')->delete(); } }