From 26646a30d9e50bfe33db435a5f254af3fcd0b11e Mon Sep 17 00:00:00 2001 From: JonLee Date: Tue, 24 Dec 2024 18:29:42 +0800 Subject: [PATCH 1/4] fix: Improve some coding --- src/Adapters/DatabaseAdapter.php | 11 ++++------- src/Commands/GroupAdd.php | 2 +- src/Commands/PolicyAdd.php | 2 +- src/EnforcerLocalizer.php | 9 +++++---- src/EnforcerManager.php | 11 ++++++----- src/LauthzServiceProvider.php | 12 +++--------- src/Loaders/FileLoader.php | 2 +- src/Loaders/TextLoader.php | 2 +- src/Loaders/UrlLoader.php | 2 +- src/Models/Rule.php | 4 +--- 10 files changed, 24 insertions(+), 33 deletions(-) diff --git a/src/Adapters/DatabaseAdapter.php b/src/Adapters/DatabaseAdapter.php index 4f8d506..2647ef8 100755 --- a/src/Adapters/DatabaseAdapter.php +++ b/src/Adapters/DatabaseAdapter.php @@ -14,7 +14,6 @@ use Casbin\Persist\AdapterHelper; use DateTime; use Casbin\Exceptions\InvalidFilterTypeException; -use Illuminate\Support\Facades\DB; /** * DatabaseAdapter. @@ -28,14 +27,14 @@ class DatabaseAdapter implements DatabaseAdapterContract, BatchDatabaseAdapterCo /** * @var bool */ - private $filtered = false; + private bool $filtered = false; /** * Rules eloquent model. * * @var Rule */ - protected $eloquent; + protected Rule $eloquent; /** * the DatabaseAdapter constructor. @@ -331,10 +330,8 @@ public function loadFilteredPolicy(Model $model, $filter): void } $rows = $instance->get()->makeHidden(['created_at','updated_at', 'id'])->toArray(); foreach ($rows as $row) { - $row = array_filter($row, function($value) { return !is_null($value) && $value !== ''; }); - $line = implode(', ', array_filter($row, function ($val) { - return '' != $val && !is_null($val); - })); + $row = array_filter($row, static fn($value): bool => !is_null($value) && $value !== ''); + $line = implode(', ', array_filter($row, static fn ($val): bool => '' != $val && !is_null($val))); $this->loadPolicyLine(trim($line), $model); } $this->setFiltered(true); diff --git a/src/Commands/GroupAdd.php b/src/Commands/GroupAdd.php index 07da2bf..c5441ec 100644 --- a/src/Commands/GroupAdd.php +++ b/src/Commands/GroupAdd.php @@ -33,7 +33,7 @@ class GroupAdd extends Command public function handle() { $params = explode(',', $this->argument('policy')); - array_walk($params, function (&$value) { + array_walk($params, static function (&$value): void { $value = trim($value); }); $ret = Enforcer::addGroupingPolicy(...$params); diff --git a/src/Commands/PolicyAdd.php b/src/Commands/PolicyAdd.php index 992fb8d..03b6da8 100644 --- a/src/Commands/PolicyAdd.php +++ b/src/Commands/PolicyAdd.php @@ -33,7 +33,7 @@ class PolicyAdd extends Command public function handle() { $params = explode(',', $this->argument('policy')); - array_walk($params, function (&$value) { + array_walk($params, static function (&$value): void { $value = trim($value); }); $ret = Enforcer::addPolicy(...$params); diff --git a/src/EnforcerLocalizer.php b/src/EnforcerLocalizer.php index 81f4929..36297f8 100644 --- a/src/EnforcerLocalizer.php +++ b/src/EnforcerLocalizer.php @@ -4,6 +4,7 @@ use Illuminate\Contracts\Auth\Access\Authorizable; use Illuminate\Contracts\Auth\Access\Gate; +use Illuminate\Foundation\Application; use Lauthz\Facades\Enforcer; class EnforcerLocalizer @@ -11,16 +12,16 @@ class EnforcerLocalizer /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var Application */ - protected $app; + protected Application $app; /** * Create a new localizer instance. * - * @param \Illuminate\Foundation\Application $app + * @param Application $app */ - public function __construct($app) + public function __construct(Application $app) { $this->app = $app; } diff --git a/src/EnforcerManager.php b/src/EnforcerManager.php index 62e3a47..19a25ee 100755 --- a/src/EnforcerManager.php +++ b/src/EnforcerManager.php @@ -8,6 +8,7 @@ use Casbin\Log\Logger\DefaultLogger; use Lauthz\Contracts\Factory; use Lauthz\Models\Rule; +use Illuminate\Foundation\Application; use Illuminate\Support\Arr; use InvalidArgumentException; use Lauthz\Loaders\ModelLoaderManager; @@ -20,23 +21,23 @@ class EnforcerManager implements Factory /** * The application instance. * - * @var \Illuminate\Foundation\Application + * @var \ */ - protected $app; + protected Application $app; /** * The array of created "guards". * * @var array */ - protected $guards = []; + protected array $guards = []; /** * Create a new manager instance. * - * @param \Illuminate\Foundation\Application $app + * @param Application $app */ - public function __construct($app) + public function __construct(Application $app) { $this->app = $app; } diff --git a/src/LauthzServiceProvider.php b/src/LauthzServiceProvider.php index 7d60cfe..5b90d25 100644 --- a/src/LauthzServiceProvider.php +++ b/src/LauthzServiceProvider.php @@ -51,17 +51,11 @@ protected function bootObserver() */ public function register() { - $this->app->singleton('enforcer', function ($app) { - return new EnforcerManager($app); - }); + $this->app->singleton('enforcer', fn ($app) => new EnforcerManager($app)); - $this->app->singleton(ModelLoaderManager::class, function ($app) { - return new ModelLoaderManager($app); - }); + $this->app->singleton(ModelLoaderManager::class, fn ($app) => new ModelLoaderManager($app)); - $this->app->singleton(EnforcerLocalizer::class, function ($app) { - return new EnforcerLocalizer($app); - }); + $this->app->singleton(EnforcerLocalizer::class, fn ($app) => new EnforcerLocalizer($app)); } /** diff --git a/src/Loaders/FileLoader.php b/src/Loaders/FileLoader.php index e2845c2..d2279e4 100644 --- a/src/Loaders/FileLoader.php +++ b/src/Loaders/FileLoader.php @@ -13,7 +13,7 @@ class FileLoader implements ModelLoader * * @var string */ - private $filePath; + private string $filePath; /** * Constructor to initialize the file path. diff --git a/src/Loaders/TextLoader.php b/src/Loaders/TextLoader.php index 5257a3d..a79f6cb 100644 --- a/src/Loaders/TextLoader.php +++ b/src/Loaders/TextLoader.php @@ -13,7 +13,7 @@ class TextLoader implements ModelLoader * * @var string */ - private $text; + private string $text; /** * Constructor to initialize the model text. diff --git a/src/Loaders/UrlLoader.php b/src/Loaders/UrlLoader.php index f07c27c..c1ef4ca 100644 --- a/src/Loaders/UrlLoader.php +++ b/src/Loaders/UrlLoader.php @@ -14,7 +14,7 @@ class UrlLoader implements ModelLoader * * @var string */ - private $url; + private string $url; /** * Constructor to initialize the url path. diff --git a/src/Models/Rule.php b/src/Models/Rule.php index 9259a40..e045855 100755 --- a/src/Models/Rule.php +++ b/src/Models/Rule.php @@ -61,9 +61,7 @@ public function __construct(array $attributes = [], $guard = '') */ public function getAllFromCache() { - $get = function () { - return $this->select('ptype', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5')->get()->toArray(); - }; + $get = fn () => $this->select('ptype', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5')->get()->toArray(); if (!$this->config('cache.enabled', false)) { return $get(); } From 4282b3e25fd27fe99ed516d4e89e5edf5a38bc29 Mon Sep 17 00:00:00 2001 From: JonLee Date: Tue, 24 Dec 2024 18:36:52 +0800 Subject: [PATCH 2/4] ci: add php8.4 --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6afb60b..bf403e9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,6 +46,9 @@ jobs: - php: 8.3 laravel: 11.* phpunit: ~10.5 + - php: 8.4 + laravel: 11.* + phpunit: ~10.5 name: Laravel${{ matrix.laravel }}-PHP${{ matrix.php }} From c2123329d598381deae4d5dfac4006c90b36c274 Mon Sep 17 00:00:00 2001 From: JonLee Date: Tue, 24 Dec 2024 18:40:37 +0800 Subject: [PATCH 3/4] ci: update ci file --- .github/workflows/{build.yml => phpunit.yml} | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{build.yml => phpunit.yml} (96%) diff --git a/.github/workflows/build.yml b/.github/workflows/phpunit.yml similarity index 96% rename from .github/workflows/build.yml rename to .github/workflows/phpunit.yml index bf403e9..b307b8e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/phpunit.yml @@ -1,4 +1,4 @@ -name: build +name: PHPUnit on: push: diff --git a/README.md b/README.md index 7c16187..e3837f7 100755 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

- Build Status + PHPUnit Status Coverage Status From fa82815dd9d11cab83d0bc1decbab7b03c4c97d0 Mon Sep 17 00:00:00 2001 From: JonLee Date: Tue, 24 Dec 2024 19:03:20 +0800 Subject: [PATCH 4/4] docs: add gate usage --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index e3837f7..6ae89a0 100755 --- a/README.md +++ b/README.md @@ -123,6 +123,13 @@ if (Enforcer::enforce("eve", "articles", "edit")) { ``` +By default, [Gate](https://laravel.com/docs/11.x/authorization#gates) checks will be automatically intercepted +. You can check if a user has a permission with Laravel's default `can` function: + +```php +$user->can('articles,read'); +``` + ### Using Enforcer Api It provides a very rich api to facilitate various operations on the Policy: