diff --git a/src/AAuthServiceProvider.php b/src/AAuthServiceProvider.php index 97e6f41..5b24842 100644 --- a/src/AAuthServiceProvider.php +++ b/src/AAuthServiceProvider.php @@ -5,6 +5,7 @@ use AuroraWebSoftware\AAuth\Commands\AAuthCommand; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Blade; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Session; use Spatie\LaravelPackageTools\Package; use Spatie\LaravelPackageTools\PackageServiceProvider; @@ -52,6 +53,10 @@ public function boot(): void ); }); + Gate::before(function ($user, $ability, $arguments = []) { + return app('aauth')->can($ability) ?: null; + }); + Blade::directive('aauth', function ($permission) { return ""; }); diff --git a/src/Traits/AAuthUser.php b/src/Traits/AAuthUser.php index 28f457a..5d0fda7 100644 --- a/src/Traits/AAuthUser.php +++ b/src/Traits/AAuthUser.php @@ -71,4 +71,23 @@ public function getDeletableAttribute(): bool // todo new syntax return $this->getAssignedUserCountAttribute() == 0; } + + public function can($abilities, $arguments = []): bool + { + if (is_string($abilities)) { + return app('aauth')->can($abilities); + } + + if (is_array($abilities)) { + foreach ($abilities as $ability) { + if (! app('aauth')->can($ability)) { + return false; + } + } + + return true; + } + + return parent::can($abilities, $arguments); + } }