"use client"; import React, { useState, useCallback } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { roleAPI, RoleGroup } from "@/lib/api/role"; import { AlertTriangle } from "lucide-react"; interface RoleDeleteModalProps { isOpen: boolean; onClose: () => void; onSuccess?: () => void; role: RoleGroup | null; } /** * 권한 그룹 삭제 확인 모달 * * 기능: * - 권한 그룹 삭제 확인 * - CASCADE 삭제 경고 (멤버, 메뉴 권한) * * shadcn/ui 표준 확인 모달 디자인 */ export function RoleDeleteModal({ isOpen, onClose, onSuccess, role }: RoleDeleteModalProps) { const [isLoading, setIsLoading] = useState(false); const [showAlert, setShowAlert] = useState(false); const [alertMessage, setAlertMessage] = useState(""); const [alertType, setAlertType] = useState<"success" | "error">("error"); // 알림 표시 const displayAlert = useCallback((message: string, type: "success" | "error") => { setAlertMessage(message); setAlertType(type); setShowAlert(true); setTimeout(() => setShowAlert(false), 3000); }, []); // 삭제 핸들러 const handleDelete = useCallback(async () => { if (!role) return; setIsLoading(true); try { const response = await roleAPI.delete(role.objid); if (response.success) { displayAlert("권한 그룹이 삭제되었습니다.", "success"); setTimeout(() => { onClose(); onSuccess?.(); }, 1500); } else { displayAlert(response.message || "삭제에 실패했습니다.", "error"); } } catch (error) { console.error("권한 그룹 삭제 오류:", error); displayAlert("권한 그룹 삭제 중 오류가 발생했습니다.", "error"); } finally { setIsLoading(false); } }, [role, onClose, onSuccess, displayAlert]); if (!role) return null; return ( 권한 그룹 삭제
{/* 경고 메시지 */}

정말로 삭제하시겠습니까?

이 작업은 되돌릴 수 없습니다. 권한 그룹을 삭제하면 다음 데이터도 함께 삭제됩니다:

  • 연결된 모든 멤버 ({role.memberCount || 0}명)
  • 설정된 모든 메뉴 권한 ({role.menuCount || 0}개)
{/* 삭제할 권한 그룹 정보 */}
권한 그룹명 {role.authName}
권한 코드 {role.authCode}
회사 {role.companyCode}
{role.memberNames && (
멤버:

{role.memberNames}

)}
{/* 알림 메시지 */} {showAlert && (
{alertMessage}
)}
); }