"use client"; import React, { useState, useEffect } from "react"; import { ResizableDialog, ResizableDialogContent, ResizableDialogHeader, ResizableDialogTitle, ResizableDialogDescription, ResizableDialogFooter, } from "@/components/ui/resizable-dialog"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { userAPI } from "@/lib/api/user"; import { Shield, ShieldCheck, User, Users, Building2, AlertTriangle } from "lucide-react"; interface UserAuthEditModalProps { isOpen: boolean; onClose: () => void; onSuccess?: () => void; user: any | null; } /** * 사용자 권한 변경 모달 * * 권한 레벨만 변경 가능 (최고 관리자 전용) */ export function UserAuthEditModal({ isOpen, onClose, onSuccess, user }: UserAuthEditModalProps) { const [selectedUserType, setSelectedUserType] = useState(""); const [isLoading, setIsLoading] = useState(false); const [showConfirmation, setShowConfirmation] = useState(false); // 모달 열릴 때 현재 권한 설정 useEffect(() => { if (isOpen && user) { setSelectedUserType(user.userType || "USER"); setShowConfirmation(false); } }, [isOpen, user]); // 권한 정보 const userTypeOptions = [ { value: "SUPER_ADMIN", label: "최고 관리자", description: "모든 회사 관리, DDL 실행, 회사 생성/삭제 가능", icon: , color: "text-purple-600", }, { value: "COMPANY_ADMIN", label: "회사 관리자", description: "자기 회사 데이터 및 사용자 관리 가능", icon: , color: "text-blue-600", }, { value: "USER", label: "일반 사용자", description: "자기 회사 데이터 조회/수정만 가능", icon: , color: "text-gray-600", }, { value: "GUEST", label: "게스트", description: "제한된 조회 권한", icon: , color: "text-green-600", }, { value: "PARTNER", label: "협력업체", description: "협력업체 전용 권한", icon: , color: "text-orange-600", }, ]; const selectedOption = userTypeOptions.find((opt) => opt.value === selectedUserType); // 권한 변경 여부 확인 const isUserTypeChanged = user && selectedUserType !== user.userType; // 권한 변경 처리 const handleSave = async () => { if (!user || !isUserTypeChanged) { onClose(); return; } // SUPER_ADMIN 변경 시 확인 if (selectedUserType === "SUPER_ADMIN" && !showConfirmation) { setShowConfirmation(true); return; } setIsLoading(true); try { const response = await userAPI.update({ userId: user.userId, userName: user.userName, companyCode: user.companyCode, deptCode: user.deptCode, userType: selectedUserType, }); if (response.success) { onSuccess?.(); } else { alert(response.message || "권한 변경에 실패했습니다."); } } catch (error) { console.error("권한 변경 오류:", error); alert("권한 변경 중 오류가 발생했습니다."); } finally { setIsLoading(false); } }; if (!user) return null; return ( 사용자 권한 변경
{/* 사용자 정보 */}
사용자 ID {user.userId}
사용자명 {user.userName}
회사 {user.companyName || user.companyCode}
현재 권한 {userTypeOptions.find((opt) => opt.value === user.userType)?.label || user.userType}
{/* 권한 선택 */}
{selectedOption &&

{selectedOption.description}

}
{/* SUPER_ADMIN 경고 */} {showConfirmation && selectedUserType === "SUPER_ADMIN" && (

최고 관리자 권한 부여 경고

최고 관리자 권한은 모든 회사 데이터에 접근하고, DDL을 실행하며, 회사를 생성/삭제할 수 있는 최상위 권한입니다. 신중하게 부여해주세요.

)}
); }