import { Router } from "express"; import { getRoleGroups, getRoleGroupById, createRoleGroup, updateRoleGroup, deleteRoleGroup, getRoleMembers, addRoleMembers, updateRoleMembers, removeRoleMembers, getMenuPermissions, setMenuPermissions, getUserRoleGroups, getAllMenus, } from "../controllers/roleController"; import { authenticateToken } from "../middleware/authMiddleware"; import { requireAdmin } from "../middleware/permissionMiddleware"; const router = Router(); // 모든 role 라우트에 인증 미들웨어 적용 router.use(authenticateToken); /** * 사용자 권한 그룹 조회 (/:id 보다 먼저 정의해야 함) */ // 현재 사용자가 속한 권한 그룹 조회 router.get("/user/my-groups", getUserRoleGroups); // 특정 사용자가 속한 권한 그룹 조회 router.get("/user/:userId/groups", requireAdmin, getUserRoleGroups); /** * 권한 그룹 CRUD */ // 권한 그룹 목록 조회 (회사별) router.get("/", requireAdmin, getRoleGroups); // 권한 그룹 상세 조회 router.get("/:id", requireAdmin, getRoleGroupById); // 권한 그룹 생성 (회사 관리자 이상) router.post("/", requireAdmin, createRoleGroup); // 권한 그룹 수정 (회사 관리자 이상) router.put("/:id", requireAdmin, updateRoleGroup); // 권한 그룹 삭제 (회사 관리자 이상) router.delete("/:id", requireAdmin, deleteRoleGroup); /** * 권한 그룹 멤버 관리 */ // 권한 그룹 멤버 목록 조회 router.get("/:id/members", requireAdmin, getRoleMembers); // 권한 그룹 멤버 일괄 업데이트 (전체 교체) router.put("/:id/members", requireAdmin, updateRoleMembers); // 권한 그룹 멤버 추가 (여러 명) router.post("/:id/members", requireAdmin, addRoleMembers); // 권한 그룹 멤버 제거 (여러 명) router.delete("/:id/members", requireAdmin, removeRoleMembers); /** * 메뉴 권한 관리 */ // 전체 메뉴 목록 조회 (권한 설정용) router.get("/menus/all", requireAdmin, getAllMenus); // 메뉴 권한 목록 조회 router.get("/:id/menu-permissions", requireAdmin, getMenuPermissions); // 메뉴 권한 설정 router.put("/:id/menu-permissions", requireAdmin, setMenuPermissions); export default router;