80 lines
2.2 KiB
TypeScript
80 lines
2.2 KiB
TypeScript
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;
|