From 5751a9e846188d9d517a8ebbc687dbdeddb5cb58 Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Fri, 25 Sep 2026 23:54:50 +0300 Subject: [PATCH 1/4] Isolate global user search regression test --- tests/Feature/LazyUserTableTest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/Feature/LazyUserTableTest.php b/tests/Feature/LazyUserTableTest.php index ed559a0a..dfe40a56 100644 --- a/tests/Feature/LazyUserTableTest.php +++ b/tests/Feature/LazyUserTableTest.php @@ -179,6 +179,9 @@ public function resolveUser(string $value): Model 'email' => 'specific-search@example.com', ]); + $this->admin->syncRoles([]); + $this->admin->givePermissionTo(Permission::findOrCreate('users.view', 'web')); + $result = collect(app(SearchRegistry::class)->search('Specific Search Person', $this->admin)) ->firstWhere('provider', 'users'); From b3bf60ae1cb3a54e199f7492eb95d575535a9e55 Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Fri, 25 Sep 2026 23:59:02 +0300 Subject: [PATCH 2/4] Fix PHPStan permission name type inference --- src/Authorization/AuthorizationManager.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Authorization/AuthorizationManager.php b/src/Authorization/AuthorizationManager.php index 43e68665..0881783e 100644 --- a/src/Authorization/AuthorizationManager.php +++ b/src/Authorization/AuthorizationManager.php @@ -80,7 +80,7 @@ public function seedDefaults(): void $permissionModel = $this->permissionModel(); $permissions = collect(config('lazy.admin.permissions.defaults', [])) - ->filter(static fn ($permission): bool => is_string($permission) && $permission !== '') + ->filter(static fn ($permission): bool => self::isNonEmptyPermissionName($permission)) ->unique() ->values(); @@ -94,7 +94,7 @@ public function seedDefaults(): void $names = $rolePermissions === ['*'] ? $permissions->all() : collect($rolePermissions) - ->filter(static fn ($permission): bool => is_string($permission) && $permission !== '') + ->filter(static fn ($permission): bool => self::isNonEmptyPermissionName($permission)) ->intersect($permissions) ->values() ->all(); @@ -106,4 +106,9 @@ public function seedDefaults(): void app(PermissionRegistrar::class)->forgetCachedPermissions(); } + + private static function isNonEmptyPermissionName(mixed $permission): bool + { + return is_string($permission) && $permission !== ''; + } } From 45fc2f1be50a3034c05ca57f1dad253db45f669d Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Sat, 26 Sep 2026 00:01:22 +0300 Subject: [PATCH 3/4] Fix PHPStan activity JSON type check --- src/Http/Livewire/Activity/Page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Http/Livewire/Activity/Page.php b/src/Http/Livewire/Activity/Page.php index 78a5acd0..6b77f87a 100644 --- a/src/Http/Livewire/Activity/Page.php +++ b/src/Http/Livewire/Activity/Page.php @@ -138,6 +138,6 @@ private function displayValue(mixed $value, string $fallback = '—'): string $encoded = json_encode($value, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); - return is_string($encoded) && $encoded !== '' ? $encoded : $fallback; + return is_string($encoded) ? $encoded : $fallback; } } From 6621e9c84658cff2cf9feab295703aeb7fd8f7c3 Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Sat, 26 Sep 2026 00:01:26 +0300 Subject: [PATCH 4/4] Revert unrelated PHPStan permission workaround --- src/Authorization/AuthorizationManager.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/Authorization/AuthorizationManager.php b/src/Authorization/AuthorizationManager.php index 0881783e..43e68665 100644 --- a/src/Authorization/AuthorizationManager.php +++ b/src/Authorization/AuthorizationManager.php @@ -80,7 +80,7 @@ public function seedDefaults(): void $permissionModel = $this->permissionModel(); $permissions = collect(config('lazy.admin.permissions.defaults', [])) - ->filter(static fn ($permission): bool => self::isNonEmptyPermissionName($permission)) + ->filter(static fn ($permission): bool => is_string($permission) && $permission !== '') ->unique() ->values(); @@ -94,7 +94,7 @@ public function seedDefaults(): void $names = $rolePermissions === ['*'] ? $permissions->all() : collect($rolePermissions) - ->filter(static fn ($permission): bool => self::isNonEmptyPermissionName($permission)) + ->filter(static fn ($permission): bool => is_string($permission) && $permission !== '') ->intersect($permissions) ->values() ->all(); @@ -106,9 +106,4 @@ public function seedDefaults(): void app(PermissionRegistrar::class)->forgetCachedPermissions(); } - - private static function isNonEmptyPermissionName(mixed $permission): bool - { - return is_string($permission) && $permission !== ''; - } }