Feat: Управление группами пользователей
✅ Modal добавления в группу на странице пользователя ✅ Метод addUser — добавление пользователя в группу ✅ Метод removeUser — удаление пользователя из группы ✅ Фильтр доступных групп (общие + группы организации) ✅ Проверка: нельзя добавить в группу другой организации ✅ Маршруты: POST /users/{user}/groups/add, DELETE /groups/{group}/users/{user}/remove Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -144,4 +144,37 @@ class GroupUserController extends Controller
|
||||
return redirect()->route('admin.groups.index')
|
||||
->with('success', 'Группа успешно удалена.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавить пользователя в группу
|
||||
*/
|
||||
public function addUser(User $user, Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'group_id' => 'required|exists:groups,id',
|
||||
]);
|
||||
|
||||
$group = Group::findOrFail($validated['group_id']);
|
||||
|
||||
// Проверка доступа
|
||||
if ($group->organization_id && $user->organization_id !== $group->organization_id) {
|
||||
return back()->with('error', 'Нельзя добавить пользователя в группу другой организации.');
|
||||
}
|
||||
|
||||
$group->users()->attach($user->id);
|
||||
|
||||
return back()->with('success', 'Пользователь добавлен в группу.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Удалить пользователя из группы
|
||||
*/
|
||||
public function removeUser(Group $group, User $user)
|
||||
{
|
||||
Gate::authorize('update', $group);
|
||||
|
||||
$group->users()->detach($user->id);
|
||||
|
||||
return back()->with('success', 'Пользователь удалён из группы.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,10 +89,26 @@ class UserController extends Controller
|
||||
public function show(User $user)
|
||||
{
|
||||
Gate::authorize('view', $user);
|
||||
|
||||
|
||||
$user->load(['organization', 'roles', 'groups']);
|
||||
|
||||
return view('admin.users.show', compact('user'));
|
||||
// Получаем доступные группы для пользователя
|
||||
if ($user->organization_id) {
|
||||
$availableGroups = Group::whereNull('organization_id')
|
||||
->orWhere('organization_id', $user->organization_id)
|
||||
->whereDoesntHave('users', function($q) use ($user) {
|
||||
$q->where('users.id', $user->id);
|
||||
})
|
||||
->get();
|
||||
} else {
|
||||
$availableGroups = Group::whereNull('organization_id')
|
||||
->whereDoesntHave('users', function($q) use ($user) {
|
||||
$q->where('users.id', $user->id);
|
||||
})
|
||||
->get();
|
||||
}
|
||||
|
||||
return view('admin.users.show', compact('user', 'availableGroups'));
|
||||
}
|
||||
|
||||
public function edit(User $user)
|
||||
|
||||
Reference in New Issue
Block a user