From e73ab3d4eef0535aa9b1f21f47664bbc651d9f9c Mon Sep 17 00:00:00 2001 From: gdarko Date: Sun, 18 Feb 2024 00:13:24 +0100 Subject: [PATCH] Override the default bouncer scope class with a temporary hotfix to the roles issue --- app/Bouncer/Scopes/DefaultScope.php | 34 ++++++++++++++++++++++++++-- app/Providers/AppServiceProvider.php | 5 +++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/Bouncer/Scopes/DefaultScope.php b/app/Bouncer/Scopes/DefaultScope.php index 0418b813..17a0f650 100644 --- a/app/Bouncer/Scopes/DefaultScope.php +++ b/app/Bouncer/Scopes/DefaultScope.php @@ -2,7 +2,37 @@ namespace InvoiceShelf\Bouncer\Scopes; -class DefaultScope -{ +use Silber\Bouncer\Database\Scope\Scope; +class DefaultScope extends Scope +{ + public function applyToModelQuery($query, $table = null) + { + if (is_null($this->scope) || $this->onlyScopeRelations) { + return $query; + } + + if (is_null($table)) { + $table = $query->getModel()->getTable(); + } + + return $this->applyToQuery($query, $table); + } + + public function applyToRelationQuery($query, $table) + { + if (is_null($this->scope)) { + return $query; + } + + return $this->applyToQuery($query, $table); + } + + protected function applyToQuery($query, $table) + { + return $query->where(function ($query) use ($table) { + $query->where("{$table}.scope", $this->scope) + ->orWhereNull("{$table}.scope"); + }); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 94b4adb1..31266a31 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,8 +4,11 @@ namespace InvoiceShelf\Providers; use Illuminate\Pagination\Paginator; use Illuminate\Support\ServiceProvider; +use InvoiceShelf\Bouncer\Scopes\DefaultScope; use InvoiceShelf\Space\InstallUtils; +use Silber\Bouncer\Database\Models as BouncerModels; + class AppServiceProvider extends ServiceProvider { /** @@ -30,7 +33,7 @@ class AppServiceProvider extends ServiceProvider */ public function register() { - // + BouncerModels::scope(new DefaultScope); } public function addMenus()