"use client"; import React, { useState, useCallback, useEffect } from "react"; import { UserAuthTable } from "@/components/admin/UserAuthTable"; import { UserAuthEditModal } from "@/components/admin/UserAuthEditModal"; import { userAPI } from "@/lib/api/user"; import { useAuth } from "@/hooks/useAuth"; import { AlertCircle } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ScrollToTop } from "@/components/common/ScrollToTop"; /** * 사용자 권한 관리 페이지 * URL: /admin/userAuth * * 최고 관리자만 접근 가능 * 사용자별 권한 레벨(SUPER_ADMIN, COMPANY_ADMIN, USER 등) 관리 */ export default function UserAuthPage() { const { user: currentUser } = useAuth(); // 최고 관리자 여부 const isSuperAdmin = currentUser?.companyCode === "*" && currentUser?.userType === "SUPER_ADMIN"; // 상태 관리 const [users, setUsers] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [paginationInfo, setPaginationInfo] = useState({ currentPage: 1, pageSize: 20, totalItems: 0, totalPages: 0, }); // 권한 변경 모달 const [authEditModal, setAuthEditModal] = useState({ isOpen: false, user: null as any | null, }); // 데이터 로드 const loadUsers = useCallback( async (page: number = 1) => { setIsLoading(true); setError(null); try { const response = await userAPI.getList({ page, size: paginationInfo.pageSize, }); if (response.success && response.data) { setUsers(response.data); setPaginationInfo({ currentPage: response.currentPage || page, pageSize: response.pageSize || paginationInfo.pageSize, totalItems: response.total || 0, totalPages: Math.ceil((response.total || 0) / (response.pageSize || paginationInfo.pageSize)), }); } else { setError(response.message || "사용자 목록을 불러오는데 실패했습니다."); } } catch (err) { console.error("사용자 목록 로드 오류:", err); setError("사용자 목록을 불러오는 중 오류가 발생했습니다."); } finally { setIsLoading(false); } }, [paginationInfo.pageSize], ); useEffect(() => { loadUsers(1); }, []); // 권한 변경 핸들러 const handleEditAuth = (user: any) => { setAuthEditModal({ isOpen: true, user, }); }; // 권한 변경 모달 닫기 const handleAuthEditClose = () => { setAuthEditModal({ isOpen: false, user: null, }); }; // 권한 변경 성공 const handleAuthEditSuccess = () => { loadUsers(paginationInfo.currentPage); handleAuthEditClose(); }; // 페이지 변경 const handlePageChange = (page: number) => { loadUsers(page); }; // 최고 관리자가 아닌 경우 if (!isSuperAdmin) { return (

사용자 권한 관리

사용자별 권한 레벨을 관리합니다. (최고 관리자 전용)

접근 권한 없음

권한 관리는 최고 관리자만 접근할 수 있습니다.

); } return (
{/* 페이지 헤더 */}

사용자 권한 관리

사용자별 권한 레벨을 관리합니다. (최고 관리자 전용)

{/* 에러 메시지 */} {error && (

오류가 발생했습니다

{error}

)} {/* 사용자 권한 테이블 */} {/* 권한 변경 모달 */}
{/* Scroll to Top 버튼 (모바일/태블릿 전용) */}
); }