Files
sam-manage/app/Http/Controllers/UserController.php

68 lines
2.2 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
use App\Models\Department;
use App\Models\Role;
use App\Services\UserService;
use Illuminate\Http\Request;
use Illuminate\View\View;
class UserController extends Controller
{
public function __construct(
private readonly UserService $userService
) {}
/**
* 사용자 목록 페이지
*/
public function index(Request $request): View
{
return view('users.index');
}
/**
* 사용자 생성 페이지
*/
public function create(): View
{
$tenantId = session('selected_tenant_id');
// 역할/부서 목록 (테넌트별)
$roles = $tenantId ? Role::where('tenant_id', $tenantId)->orderBy('name')->get() : collect();
$departments = $tenantId ? Department::where('tenant_id', $tenantId)->where('is_active', true)->orderBy('name')->get() : collect();
return view('users.create', compact('roles', 'departments'));
}
/**
* 사용자 수정 페이지
*/
public function edit(int $id): View
{
// 슈퍼관리자 보호: 일반관리자가 슈퍼관리자에 접근 불가 (존재하지 않는 것처럼)
if (! $this->userService->canAccessUser($id)) {
abort(404, '사용자를 찾을 수 없습니다.');
}
$user = $this->userService->getUserById($id);
if (! $user) {
abort(404, '사용자를 찾을 수 없습니다.');
}
$tenantId = session('selected_tenant_id');
// 역할/부서 목록 (테넌트별)
$roles = $tenantId ? Role::where('tenant_id', $tenantId)->orderBy('name')->get() : collect();
$departments = $tenantId ? Department::where('tenant_id', $tenantId)->where('is_active', true)->orderBy('name')->get() : collect();
// 사용자의 현재 역할/부서 ID 목록
$userRoleIds = $tenantId ? $user->userRoles()->where('tenant_id', $tenantId)->pluck('role_id')->toArray() : [];
$userDepartmentIds = $tenantId ? $user->departmentUsers()->where('tenant_id', $tenantId)->pluck('department_id')->toArray() : [];
return view('users.edit', compact('user', 'roles', 'departments', 'userRoleIds', 'userDepartmentIds'));
}
}