From d77cdbe10f495a67d1e155b8a3f173e2bb7a643e Mon Sep 17 00:00:00 2001 From: Jing Li Date: Thu, 9 Nov 2023 19:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E5=9C=B0=E4=BA=A7=E9=87=8F/=E5=9F=BA?= =?UTF-8?q?=E5=9C=B0=E6=95=B0=E6=8D=AE=E7=9A=84=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/ModelFilters/AgriculturalBaseFilter.php | 11 ++++++++++- app/ModelFilters/CropYieldFilter.php | 10 +++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/ModelFilters/AgriculturalBaseFilter.php b/app/ModelFilters/AgriculturalBaseFilter.php index 058e049..e8f7a30 100644 --- a/app/ModelFilters/AgriculturalBaseFilter.php +++ b/app/ModelFilters/AgriculturalBaseFilter.php @@ -2,13 +2,22 @@ namespace App\ModelFilters; +use App\Models\AdminUser; use EloquentFilter\ModelFilter; +use Illuminate\Support\Facades\Auth; class AgriculturalBaseFilter extends ModelFilter { public function type($type) { - return $this->where('type', $type); + return $this->where('type', $type) + ->when($type == 1, function ($builder) { + $user = Auth::user(); + + if ($user instanceof AdminUser && ! $user->isAdministrator() && ! $user->view_all_bases) { + $builder->whereRaw("id in (select base_id from admin_user_bases where user_id = {$user->id})"); + } + }); } public function parent($parent) diff --git a/app/ModelFilters/CropYieldFilter.php b/app/ModelFilters/CropYieldFilter.php index 538e141..0f090c2 100644 --- a/app/ModelFilters/CropYieldFilter.php +++ b/app/ModelFilters/CropYieldFilter.php @@ -2,7 +2,9 @@ namespace App\ModelFilters; +use App\Models\AdminUser; use EloquentFilter\ModelFilter; +use Illuminate\Support\Facades\Auth; class CropYieldFilter extends ModelFilter { @@ -25,7 +27,13 @@ class CropYieldFilter extends ModelFilter public function type($type) { return $this->whereHas('base', function($q) use ($type) { - return $q->where('type', $type); + return $q->when($type == 1, function ($builder) { + $user = Auth::user(); + + if ($user instanceof AdminUser && ! $user->isAdministrator() && ! $user->view_all_bases) { + $builder->whereRaw("id in (select base_id from admin_user_bases where user_id = {$user->id})"); + } + })->where('type', $type); }); } }