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(); // 직급/직책 목록 $ranks = $tenantId ? Position::forTenant($tenantId)->ranks()->where('is_active', true)->ordered()->get() : collect(); $titles = $tenantId ? Position::forTenant($tenantId)->titles()->where('is_active', true)->ordered()->get() : collect(); // 본사 테넌트 여부 확인 (본사: 이메일 인증, 그 외: 비밀번호 직접 입력) $isHQ = false; if ($tenantId) { $tenant = Tenant::find($tenantId); $isHQ = $tenant?->tenant_type === 'HQ'; } return view('users.create', compact('roles', 'departments', 'isHQ', 'ranks', 'titles')); } /** * 사용자 수정 페이지 */ 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() : []; // 직급/직책 목록 $ranks = $tenantId ? Position::forTenant($tenantId)->ranks()->where('is_active', true)->ordered()->get() : collect(); $titles = $tenantId ? Position::forTenant($tenantId)->titles()->where('is_active', true)->ordered()->get() : collect(); // tenant_user_profiles에서 현재 position_key, job_title_key 조회 $profile = $tenantId ? DB::table('tenant_user_profiles') ->where('tenant_id', $tenantId) ->where('user_id', $user->id) ->first(['position_key', 'job_title_key', 'employee_status']) : null; return view('users.edit', compact('user', 'roles', 'departments', 'userRoleIds', 'userDepartmentIds', 'ranks', 'titles', 'profile')); } }