# 관리자 메뉴 관리 기능 > 관리자가 **메뉴를 등록·수정·삭제·순서 변경**하고, **관리자 상단 네비게이션**에 DB 메뉴를 반영하는 기능 정리. --- ## 1. 목적 - **관리자 화면(admin)** 상단 메뉴를 **DB로 관리**하여, 코드 수정 없이 메뉴 추가·순서·노출 대상 변경 가능. - 참고: slow-auth-application의 메뉴 설정 방식과 유사하게 구현. --- ## 2. DB 구조 ### 2-1. menu_type (메뉴 종류) | 컬럼 | 설명 | |--------|------| | mt_idx | PK | | mt_code | 코드 (admin, site 등) | | mt_name | 표시명 | | mt_sort | 정렬 | - 초기 데이터: `admin` (관리자 메뉴) 1건. ### 2-2. menu (메뉴 항목) | 컬럼 | 설명 | |----------|------| | mm_idx | PK | | mt_idx | 메뉴 종류 FK | | mm_name | 메뉴명 | | mm_link | 링크 경로 (예: admin, admin/users) | | mm_pidx | 부모 메뉴 PK (0=최상위) | | mm_dep | 깊이 (0, 1, 2) | | mm_num | 형제 내 순서 | | mm_cnode | 자식 개수 | | mm_level | 노출 허용 mb_level, 쉼표 구분 (빈값=전체) | | mm_is_view | Y=노출, N=숨김 | - **링크**: 상대 경로. 예: `admin`, `admin/users`, `admin/access/login-history`. 레이아웃에서 `base_url(mm_link)` 로 사용. - **노출 대상**: `mm_level`에 포함된 `mb_level` 사용자만 해당 메뉴 노출. 빈값이면 전체. --- ## 3. 권한 - 메뉴 **등록·수정·삭제·순서 변경**: **admin 로그인 사용자** (adminAuth 필터 통과 시). 역할별 제한은 없음 (추후 메뉴 관리 권한 분리 가능). --- ## 4. 기능 요약 | 기능 | 경로 | 설명 | |------|------|------| | 메뉴 관리 화면 | GET /admin/menus | 메뉴 종류 선택, 목록, 등록/수정 폼 | | 메뉴 목록 JSON | GET /admin/menus/list?mt_idx=1 | 트리 정렬된 목록 (추가 연동용) | | 메뉴 등록 | POST /admin/menus/store | 신규 메뉴 추가 | | 메뉴 수정 | POST /admin/menus/update/:id | 메뉴명, 링크, 노출대상, 사용여부 수정 | | 메뉴 삭제 | POST /admin/menus/delete/:id | 삭제 (하위 메뉴 있으면 불가) | | 순서 적용 | POST /admin/menus/move | mm_idx[] 순서대로 mm_num 반영 | --- ## 5. 관리자 레이아웃 연동 - **app/Views/admin/layout.php** - `get_admin_nav_items()` (admin_helper)로 **admin** 타입 메뉴 조회, 현재 `mb_level` 기준 노출 항목만 사용. - **1건 이상**이면 해당 목록으로 상단 `