diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 31521e9..a560fa9 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -11,5 +11,3 @@ parameters: ignoreErrors: excludePaths: - - checkMissingIterableValueType: true diff --git a/src/GateRegistrar.php b/src/GateRegistrar.php index 20a7cb5..c98d1ff 100644 --- a/src/GateRegistrar.php +++ b/src/GateRegistrar.php @@ -37,6 +37,8 @@ public function register(): void /** * Get all permissions. + * + * @return \Illuminate\Support\Collection */ protected function getPermissions(): Collection { @@ -44,25 +46,24 @@ protected function getPermissions(): Collection $key = config('acl.cache.key', 'permissions.policies'); try { - $permissions = config('acl.cache.enabled', true) + return config('acl.cache.enabled', true) ? $this->cache->rememberForever($key, fn () => $this->getPermissionsFromQuery()) : $this->getPermissionsFromQuery(); - - return collect($permissions)->map(fn ($data) => new Permission($data)); } catch (\Throwable) { $this->cache->forget($key); - return collect([]); + return collect(); } } - public function getPermissionsFromQuery(): array + /** + * @return \Illuminate\Support\Collection + */ + public function getPermissionsFromQuery(): Collection { - // @phpstan-ignore-next-line return $this->getPermissionClass() ->with('roles') - ->get() - ->toArray(); + ->get(); } protected function getPermissionClass(): Permission diff --git a/src/Models/Permission.php b/src/Models/Permission.php index 5c28641..94f379f 100644 --- a/src/Models/Permission.php +++ b/src/Models/Permission.php @@ -105,6 +105,7 @@ public function users(): BelongsToMany /** @var class-string<\Illuminate\Foundation\Auth\User> $model */ $model = config('acl.user', config('auth.providers.users.model')); + // @phpstan-ignore-next-line return $this->belongsToMany($model)->withTimestamps(); } } diff --git a/src/Models/Role.php b/src/Models/Role.php index 9d291d4..8bb4c0e 100644 --- a/src/Models/Role.php +++ b/src/Models/Role.php @@ -48,6 +48,7 @@ public function users(): BelongsToMany /** @var class-string<\Illuminate\Foundation\Auth\User> $model */ $model = config('acl.user', config('auth.providers.users.model')); + // @phpstan-ignore-next-line return $this->belongsToMany($model)->withTimestamps(); } } diff --git a/src/Traits/InteractsWithPermission.php b/src/Traits/InteractsWithPermission.php index 91448d7..c3856ba 100644 --- a/src/Traits/InteractsWithPermission.php +++ b/src/Traits/InteractsWithPermission.php @@ -69,9 +69,10 @@ public function grantPermission(mixed $ids, array $attributes = [], bool $touch */ public function permissions(): BelongsToMany { - /** @var class-string $model */ + /** @var class-string $model */ $model = config('acl.permission', Permission::class); + // @phpstan-ignore-next-line return $this->belongsToMany($model)->withTimestamps(); } diff --git a/src/Traits/InteractsWithRole.php b/src/Traits/InteractsWithRole.php index 232bd79..83e14ef 100644 --- a/src/Traits/InteractsWithRole.php +++ b/src/Traits/InteractsWithRole.php @@ -79,9 +79,10 @@ public function attachRole(mixed $role, array $attributes = [], bool $touch = tr */ public function roles(): BelongsToMany { - /** @var class-string $model */ + /** @var class-string $model */ $model = config('acl.role', Role::class); + // @phpstan-ignore-next-line return $this->belongsToMany($model)->withTimestamps(); }