From be44d09169681279aeb810bb2524b0b3d1ab7124 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Mon, 30 Mar 2026 12:44:47 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=A4=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=20+?= =?UTF-8?q?=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20GroupPolicy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✅ API groups/search принимает user_id параметр ✅ Фильтр: общие + группы организации ИЛИ только общие ✅ tags-input передаёт user_id в API ✅ Очистка кэша для GroupPolicy Co-authored-by: Qwen-Coder --- .../Controllers/Api/GroupSearchController.php | 23 +++++++++++++++++-- resources/views/admin/users/edit.blade.php | 3 ++- .../views/components/tags-input.blade.php | 9 ++++++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Api/GroupSearchController.php b/app/Http/Controllers/Api/GroupSearchController.php index 5cc2131..a327afe 100755 --- a/app/Http/Controllers/Api/GroupSearchController.php +++ b/app/Http/Controllers/Api/GroupSearchController.php @@ -11,9 +11,28 @@ class GroupSearchController extends Controller public function __invoke(Request $request) { $query = $request->get('q', ''); + $userId = $request->get('user_id', null); - $groups = Group::query() - ->with('organization') + $groupsQuery = Group::query()->with('organization'); + + // Если указан user_id - фильтруем по доступным группам + if ($userId) { + $user = \App\Models\User::find($userId); + if ($user) { + if ($user->organization_id) { + // Пользователь в организации - показываем общие + группы организации + $groupsQuery->where(function($q) use ($user) { + $q->whereNull('organization_id') + ->orWhere('organization_id', $user->organization_id); + }); + } else { + // Пользователь без организации - только общие группы + $groupsQuery->whereNull('organization_id'); + } + } + } + + $groups = $groupsQuery ->where('name', 'like', "%{$query}%") ->orderBy('name') ->limit(50) diff --git a/resources/views/admin/users/edit.blade.php b/resources/views/admin/users/edit.blade.php index e75a712..78a5c76 100644 --- a/resources/views/admin/users/edit.blade.php +++ b/resources/views/admin/users/edit.blade.php @@ -66,8 +66,9 @@ Выберите группы diff --git a/resources/views/components/tags-input.blade.php b/resources/views/components/tags-input.blade.php index 1d2c1c9..24fb721 100644 --- a/resources/views/components/tags-input.blade.php +++ b/resources/views/components/tags-input.blade.php @@ -1,4 +1,4 @@ -@props(['name', 'url', 'placeholder' => 'Начните вводить...', 'value' => []]) +@props(['name', 'url', 'placeholder' => 'Начните вводить...', 'value' => [], 'user_id' => null])
@@ -69,7 +69,12 @@ document.addEventListener('DOMContentLoaded', function() { load: function(query, callback) { if (query.length < 2) return callback(); - fetch('{{ $url }}?q=' + encodeURIComponent(query)) + let url = '{{ $url }}?q=' + encodeURIComponent(query); + @if($user_id) + url += '&user_id={{ $user_id }}'; + @endif + + fetch(url) .then(response => response.json()) .then(json => { // Фильтруем уже выбранные