- Updated the user list retrieval logic to ensure proper filtering based on company codes, enhancing security for user data access. - Implemented checks to restrict access to company management APIs, allowing only SUPER_ADMIN users to perform actions related to company data. - Adjusted the user interface to reflect access restrictions for non-SUPER_ADMIN users, providing clear feedback when access is denied. These changes strengthen the integrity of user management and ensure that sensitive company information is only accessible to authorized personnel.
88 lines
3.7 KiB
TypeScript
88 lines
3.7 KiB
TypeScript
import { Router } from "express";
|
|
import {
|
|
getAdminMenus,
|
|
getUserMenus,
|
|
getPopMenus,
|
|
getMenuInfo,
|
|
saveMenu, // 메뉴 추가
|
|
updateMenu, // 메뉴 수정
|
|
deleteMenu, // 메뉴 삭제
|
|
deleteMenusBatch, // 메뉴 일괄 삭제
|
|
toggleMenuStatus, // 메뉴 상태 토글
|
|
copyMenu, // 메뉴 복사
|
|
getUserList,
|
|
getUserInfo, // 사용자 상세 조회
|
|
getUserHistory, // 사용자 변경이력 조회
|
|
changeUserStatus, // 사용자 상태 변경
|
|
resetUserPassword, // 사용자 비밀번호 초기화
|
|
updateProfile, // 프로필 수정
|
|
getDepartmentList, // 부서 목록 조회
|
|
checkDuplicateUserId, // 사용자 ID 중복 체크
|
|
saveUser, // 사용자 등록/수정
|
|
saveUserWithDept, // 사원 + 부서 통합 저장 (NEW!)
|
|
getUserWithDept, // 사원 + 부서 조회 (NEW!)
|
|
deleteUser, // 사용자 삭제 (soft delete)
|
|
getCompanyList,
|
|
getCompanyListFromDB, // 실제 DB에서 회사 목록 조회
|
|
getCompanyByCode, // 회사 단건 조회
|
|
createCompany, // 회사 등록
|
|
updateCompany, // 회사 수정
|
|
deleteCompany, // 회사 삭제
|
|
getUserLocale,
|
|
setUserLocale,
|
|
getTableSchema, // 테이블 스키마 조회
|
|
} from "../controllers/adminController";
|
|
import { authenticateToken } from "../middleware/authMiddleware";
|
|
import { requireSuperAdmin } from "../middleware/permissionMiddleware";
|
|
|
|
const router = Router();
|
|
|
|
// 모든 admin 라우트에 인증 미들웨어 적용
|
|
router.use(authenticateToken);
|
|
|
|
// 메뉴 관련 API
|
|
router.get("/menus", getAdminMenus);
|
|
router.get("/user-menus", getUserMenus);
|
|
router.get("/pop-menus", getPopMenus);
|
|
router.get("/menus/:menuId", getMenuInfo);
|
|
router.post("/menus", saveMenu); // 메뉴 추가
|
|
router.post("/menus/:menuObjid/copy", copyMenu); // 메뉴 복사 (NEW!)
|
|
router.put("/menus/:menuId", updateMenu); // 메뉴 수정
|
|
router.put("/menus/:menuId/toggle", toggleMenuStatus); // 메뉴 상태 토글
|
|
router.delete("/menus/batch", deleteMenusBatch); // 메뉴 일괄 삭제 (순서 중요!)
|
|
router.delete("/menus/:menuId", deleteMenu); // 메뉴 삭제
|
|
|
|
// 사용자 관리 API
|
|
router.get("/users", getUserList);
|
|
router.get("/users/:userId", getUserInfo); // 사용자 상세 조회
|
|
router.get("/users/:userId/history", getUserHistory); // 사용자 변경이력 조회
|
|
router.get("/users/:userId/with-dept", getUserWithDept); // 사원 + 부서 조회 (NEW!)
|
|
router.patch("/users/:userId/status", changeUserStatus); // 사용자 상태 변경
|
|
router.post("/users", saveUser); // 사용자 등록/수정 (기존)
|
|
router.post("/users/with-dept", saveUserWithDept); // 사원 + 부서 통합 저장 (NEW!)
|
|
router.put("/users/:userId", saveUser); // 사용자 수정 (REST API)
|
|
router.put("/profile", updateProfile); // 프로필 수정
|
|
router.post("/users/check-duplicate", checkDuplicateUserId); // 사용자 ID 중복 체크
|
|
router.post("/users/reset-password", resetUserPassword); // 사용자 비밀번호 초기화
|
|
router.delete("/users/:userId", deleteUser); // 사용자 삭제 (soft delete)
|
|
|
|
// 부서 관리 API
|
|
router.get("/departments", getDepartmentList); // 부서 목록 조회
|
|
|
|
// 회사 관리 API (최고관리자 전용)
|
|
router.get("/companies", requireSuperAdmin, getCompanyList);
|
|
router.get("/companies/db", requireSuperAdmin, getCompanyListFromDB);
|
|
router.get("/companies/:companyCode", requireSuperAdmin, getCompanyByCode);
|
|
router.post("/companies", requireSuperAdmin, createCompany);
|
|
router.put("/companies/:companyCode", requireSuperAdmin, updateCompany);
|
|
router.delete("/companies/:companyCode", requireSuperAdmin, deleteCompany);
|
|
|
|
// 사용자 로케일 API
|
|
router.get("/user-locale", getUserLocale);
|
|
router.post("/user-locale", setUserLocale);
|
|
|
|
// 테이블 스키마 API (엑셀 업로드 컬럼 매핑용)
|
|
router.get("/tables/:tableName/schema", getTableSchema);
|
|
|
|
export default router;
|