Skip to content

Commit 898a6bd

Browse files
refactor: migrate to f4 (#32)
* feat: migrate to f4 * chore: fix tests setup * chore: test fixes * chore: ci & test & permission fixes * chore: update shield setup * build(deps): revert eclipse deps to dev-main * ci(tests): fix workflow --------- Co-authored-by: Omer Šabić <omer@datalinx.si>
1 parent 8aa687e commit 898a6bd

100 files changed

Lines changed: 1373 additions & 1001 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test-runner.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
name: Tests
22

33
on:
4-
# Run testing on all push and pull requests for the main branch that have committed changes in PHP files
4+
# Run testing on all push and pull requests that have committed changes in PHP files
55
push:
6-
branches: [ "main" ]
76
paths:
8-
- '**.php'
7+
- '**/*.php'
98
pull_request:
10-
branches: [ "main" ]
119
paths:
12-
- '**.php'
10+
- '**/*.php'
1311
# Make it possible to run the workflow manually
1412
workflow_dispatch:
1513

@@ -68,7 +66,7 @@ jobs:
6866

6967
- name: Install dependencies
7068
run: |
71-
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" "filament/support:^3.3" --no-interaction --no-update
69+
composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update
7270
composer update --${{ matrix.dependency-version }} --prefer-dist --no-progress --no-interaction
7371
7472
- name: Run test suite

composer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,17 @@
4545
},
4646
"require": {
4747
"php": "^8.2",
48-
"bezhansalleh/filament-shield": "^3.3",
48+
"bezhansalleh/filament-shield": "^4.0",
4949
"datalinx/php-utils": "^2.5",
5050
"eclipsephp/common": "dev-main",
5151
"eclipsephp/world-plugin": "dev-main",
52-
"filament/filament": "^3.3",
53-
"filament/spatie-laravel-media-library-plugin": "^3.2",
54-
"filament/spatie-laravel-translatable-plugin": "^3.2",
52+
"filament/filament": "^4.0",
53+
"filament/spatie-laravel-media-library-plugin": "^4.0",
54+
"lara-zeus/spatie-translatable": "^1.0",
5555
"laravel/framework": "^11.0|^12.0",
5656
"nben/filament-record-nav": "^1.0",
5757
"phpoffice/phpspreadsheet": "^1.30",
58-
"solution-forest/filament-tree": "^2.1",
58+
"solution-forest/filament-tree": "^3.0",
5959
"spatie/laravel-package-tools": "^1.19",
6060
"spatie/laravel-translatable": "^6.11"
6161
},

config/filament-shield.php

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
3+
return [
4+
'shield_resource' => [
5+
'slug' => 'shield/roles',
6+
'show_model_path' => true,
7+
'cluster' => null,
8+
'tabs' => [
9+
'pages' => true,
10+
'widgets' => true,
11+
'resources' => true,
12+
'custom_permissions' => true,
13+
],
14+
],
15+
16+
'tenant_model' => \Eclipse\Core\Models\Site::class,
17+
18+
'auth_provider_model' => \Eclipse\Core\Models\User::class,
19+
20+
'super_admin' => [
21+
'enabled' => true,
22+
'name' => 'super_admin',
23+
'define_via_gate' => false,
24+
'intercept_gate' => 'before',
25+
],
26+
27+
'panel_user' => [
28+
'enabled' => true,
29+
'name' => 'panel_user',
30+
],
31+
32+
'permissions' => [
33+
'separator' => '_',
34+
'case' => 'lower_snake',
35+
'generate' => true,
36+
],
37+
38+
'policies' => [
39+
'path' => app_path('Policies'),
40+
'merge' => false,
41+
'generate' => true,
42+
'methods' => [
43+
'viewAny', 'view', 'create', 'update', 'restore', 'restoreAny',
44+
'replicate', 'reorder', 'delete', 'deleteAny', 'forceDelete', 'forceDeleteAny',
45+
],
46+
'single_parameter_methods' => [
47+
'viewAny', 'create', 'deleteAny', 'forceDeleteAny', 'restoreAny', 'reorder',
48+
],
49+
],
50+
51+
'localization' => [
52+
'enabled' => false,
53+
'key' => 'filament-shield::filament-shield',
54+
],
55+
56+
'resources' => [
57+
'subject' => 'model',
58+
'manage' => [],
59+
'exclude' => [],
60+
],
61+
62+
'pages' => [
63+
'subject' => 'class',
64+
'prefix' => 'view',
65+
'exclude' => [
66+
],
67+
],
68+
69+
'widgets' => [
70+
'subject' => 'class',
71+
'prefix' => 'view',
72+
'exclude' => [
73+
],
74+
],
75+
76+
'custom_permissions' => [
77+
],
78+
79+
'discovery' => [
80+
'discover_all_resources' => true,
81+
'discover_all_widgets' => true,
82+
'discover_all_pages' => true,
83+
],
84+
85+
'register_role_policy' => true,
86+
];

src/Casts/BackgroundCast.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44

55
use Eclipse\Catalogue\Values\Background;
66
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
7+
use Illuminate\Database\Eloquent\Model;
78

89
class BackgroundCast implements CastsAttributes
910
{
1011
/**
1112
* Cast the attribute from the database.
1213
*
13-
* @param \Illuminate\Database\Eloquent\Model $model The model instance.
14+
* @param Model $model The model instance.
1415
* @param string $key The attribute name.
1516
* @param mixed $value The attribute value.
1617
* @param array $attributes The attributes array.
@@ -37,7 +38,7 @@ public function get($model, string $key, $value, array $attributes): Background
3738
/**
3839
* Cast the attribute to a database value.
3940
*
40-
* @param \Illuminate\Database\Eloquent\Model $model The model instance.
41+
* @param Model $model The model instance.
4142
* @param string $key The attribute name.
4243
* @param mixed $value The attribute value.
4344
* @param array $attributes The attributes array.

src/CatalogueServiceProvider.php

Lines changed: 133 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,23 @@
22

33
namespace Eclipse\Catalogue;
44

5+
use Eclipse\Catalogue\Filament\Resources\CategoryResource;
6+
use Eclipse\Catalogue\Filament\Resources\GroupResource;
7+
use Eclipse\Catalogue\Filament\Resources\MeasureUnitResource;
8+
use Eclipse\Catalogue\Filament\Resources\PriceListResource;
9+
use Eclipse\Catalogue\Filament\Resources\ProductResource;
10+
use Eclipse\Catalogue\Filament\Resources\ProductStatusResource;
11+
use Eclipse\Catalogue\Filament\Resources\ProductTypeResource;
12+
use Eclipse\Catalogue\Filament\Resources\PropertyResource;
13+
use Eclipse\Catalogue\Filament\Resources\PropertyValueResource;
14+
use Eclipse\Catalogue\Filament\Resources\TaxClassResource;
15+
use Eclipse\Catalogue\Livewire\TenantSwitcher;
516
use Eclipse\Catalogue\Models\Category;
617
use Eclipse\Catalogue\Models\Product;
718
use Filament\Support\Assets\Css;
819
use Filament\Support\Facades\FilamentAsset;
920
use Illuminate\Support\Facades\Config;
21+
use Livewire\Livewire;
1022
use Spatie\LaravelPackageTools\Package;
1123
use Spatie\LaravelPackageTools\PackageServiceProvider;
1224

@@ -44,9 +56,128 @@ public function boot()
4456
{
4557
parent::boot();
4658

59+
// Merge per-resource abilities into the effective config
60+
$this->app->booted(function () {
61+
$manage = config('filament-shield.resources.manage', []);
62+
63+
$pluginManage = [
64+
ProductResource::class => [
65+
'viewAny',
66+
'view',
67+
'create',
68+
'update',
69+
'restore',
70+
'restoreAny',
71+
'delete',
72+
'deleteAny',
73+
'forceDelete',
74+
'forceDeleteAny',
75+
],
76+
CategoryResource::class => [
77+
'viewAny',
78+
'view',
79+
'create',
80+
'update',
81+
'restore',
82+
'restoreAny',
83+
'delete',
84+
'deleteAny',
85+
'forceDelete',
86+
'forceDeleteAny',
87+
],
88+
ProductTypeResource::class => [
89+
'viewAny',
90+
'view',
91+
'create',
92+
'update',
93+
'restore',
94+
'restoreAny',
95+
'delete',
96+
'deleteAny',
97+
'forceDelete',
98+
'forceDeleteAny',
99+
],
100+
PropertyResource::class => [
101+
'viewAny',
102+
'view',
103+
'create',
104+
'update',
105+
'delete',
106+
'deleteAny',
107+
'forceDelete',
108+
'forceDeleteAny',
109+
'restore',
110+
'restoreAny',
111+
],
112+
PropertyValueResource::class => [
113+
'viewAny',
114+
'view',
115+
'create',
116+
'update',
117+
'delete',
118+
'deleteAny',
119+
],
120+
GroupResource::class => [
121+
'viewAny',
122+
'view',
123+
'create',
124+
'update',
125+
'delete',
126+
'deleteAny',
127+
],
128+
PriceListResource::class => [
129+
'viewAny',
130+
'view',
131+
'create',
132+
'update',
133+
'restore',
134+
'restoreAny',
135+
'delete',
136+
'deleteAny',
137+
'forceDelete',
138+
'forceDeleteAny',
139+
],
140+
MeasureUnitResource::class => [
141+
'viewAny',
142+
'view',
143+
'create',
144+
'update',
145+
'restore',
146+
'restoreAny',
147+
'delete',
148+
'deleteAny',
149+
'forceDelete',
150+
'forceDeleteAny',
151+
],
152+
TaxClassResource::class => [
153+
'viewAny',
154+
'view',
155+
'create',
156+
'update',
157+
'restore',
158+
'restoreAny',
159+
'delete',
160+
'deleteAny',
161+
'forceDelete',
162+
'forceDeleteAny',
163+
],
164+
ProductStatusResource::class => [
165+
'viewAny',
166+
'view',
167+
'create',
168+
'update',
169+
'delete',
170+
'deleteAny',
171+
],
172+
];
173+
174+
$manage = array_replace_recursive($manage, $pluginManage);
175+
config()->set('filament-shield.resources.manage', $manage);
176+
});
177+
47178
// Register Livewire components
48-
if (class_exists(\Livewire\Livewire::class)) {
49-
\Livewire\Livewire::component('eclipse-catalogue::tenant-switcher', \Eclipse\Catalogue\Livewire\TenantSwitcher::class);
179+
if (class_exists(Livewire::class)) {
180+
Livewire::component('eclipse-catalogue::tenant-switcher', TenantSwitcher::class);
50181
}
51182

52183
FilamentAsset::register([

src/Factories/ProductTypeFactory.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Eclipse\Catalogue\Factories;
44

55
use Eclipse\Catalogue\Models\ProductType;
6+
use Eclipse\Core\Models\Locale;
67
use Illuminate\Database\Eloquent\Factories\Factory;
78

89
class ProductTypeFactory extends Factory
@@ -35,8 +36,8 @@ public function definition(): array
3536
*/
3637
protected function getAvailableLocales(): array
3738
{
38-
if (class_exists(\Eclipse\Core\Models\Locale::class)) {
39-
return \Eclipse\Core\Models\Locale::getAvailableLocales()
39+
if (class_exists(Locale::class)) {
40+
return Locale::getAvailableLocales()
4041
->pluck('id')
4142
->toArray();
4243
}

src/Filament/Filters/Operators/CustomPropertyContainsOperator.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Eclipse\Catalogue\Filament\Filters\Operators;
44

5-
use Filament\Forms\Components\Component;
65
use Filament\Forms\Components\TextInput;
76
use Filament\Tables\Filters\QueryBuilder\Constraints\Operators\Operator;
87
use Illuminate\Database\Eloquent\Builder;
@@ -48,7 +47,7 @@ public function getSummary(): string
4847
/**
4948
* Get the form schema of the operator.
5049
*
51-
* @return array<Component>
50+
* @return array<\Filament\Schemas\Components\Component>
5251
*/
5352
public function getFormSchema(): array
5453
{

src/Filament/Filters/Operators/CustomPropertyEndsWithOperator.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Eclipse\Catalogue\Filament\Filters\Operators;
44

5-
use Filament\Forms\Components\Component;
65
use Filament\Forms\Components\TextInput;
76
use Filament\Tables\Filters\QueryBuilder\Constraints\Operators\Operator;
87
use Illuminate\Database\Eloquent\Builder;
@@ -48,7 +47,7 @@ public function getSummary(): string
4847
/**
4948
* Get the form schema of the operator.
5049
*
51-
* @return array<Component>
50+
* @return array<\Filament\Schemas\Components\Component>
5251
*/
5352
public function getFormSchema(): array
5453
{

src/Filament/Filters/Operators/CustomPropertyEqualsOperator.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace Eclipse\Catalogue\Filament\Filters\Operators;
44

5-
use Filament\Forms\Components\Component;
65
use Filament\Forms\Components\TextInput;
76
use Filament\Tables\Filters\QueryBuilder\Constraints\Operators\Operator;
87
use Illuminate\Database\Eloquent\Builder;
@@ -48,7 +47,7 @@ public function getSummary(): string
4847
/**
4948
* Get the form schema of the operator.
5049
*
51-
* @return array<Component>
50+
* @return array<\Filament\Schemas\Components\Component>
5251
*/
5352
public function getFormSchema(): array
5453
{

0 commit comments

Comments
 (0)