header('HX-Request')) { return response('', 200)->header('HX-Redirect', route('users.index')); } 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(); // 본사 테넌트 여부 확인 (본사: 이메일 인증, 그 외: 비밀번호 직접 입력) $isHQ = false; if ($tenantId) { $tenant = Tenant::find($tenantId); $isHQ = $tenant?->tenant_type === 'HQ'; } return view('users.create', compact('roles', 'departments', 'isHQ')); } /** * 사용자 수정 페이지 */ 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')); } }