feat: [메뉴] 글로벌 메뉴 관리 기능 구현 (슈퍼관리자 전용)

- 글로벌 메뉴 CRUD API 및 라우트 추가 (GlobalMenuController)
- 글로벌 메뉴 목록/생성/수정 뷰 추가 (보라색 테마)
- MenuService에 글로벌 메뉴 관련 메서드 11개 추가
- 메뉴 관리 페이지에 '글로벌 메뉴 관리' 버튼 추가
- 가져오기 모드에서 이미 가져온 메뉴 비활성화 표시
- super.admin 미들웨어로 접근 제어
This commit is contained in:
2025-12-02 21:41:15 +09:00
parent 7bba5e71a6
commit 5db21095f3
12 changed files with 1458 additions and 39 deletions

View File

@@ -24,8 +24,8 @@ public function index(Request $request): JsonResponse
$importMode = $request->get('mode') === 'import' && $tenantId;
if ($importMode) {
// 가져오기 모드: 복사 가능한 글로벌 메뉴 목록
$menus = $this->menuService->getAvailableGlobalMenus($tenantId);
// 가져오기 모드: 전체 글로벌 메뉴 (가져오기 상태 포함)
$menus = $this->menuService->getAllGlobalMenusWithStatus($tenantId);
} else {
// 일반 모드: 현재 범위의 메뉴 목록
$menus = $this->menuService->getMenus(
@@ -369,8 +369,7 @@ public function move(Request $request): JsonResponse
}
/**
* 복사 가능한 글로벌 메뉴 목록 조회
* (현재 테넌트에 존재하지 않는 글로벌 메뉴만)
* 글로벌 메뉴 목록 조회 (가져오기 상태 포함)
*/
public function availableGlobal(Request $request): JsonResponse
{
@@ -385,7 +384,7 @@ public function availableGlobal(Request $request): JsonResponse
}
try {
$menus = $this->menuService->getAvailableGlobalMenus($tenantId);
$menus = $this->menuService->getAllGlobalMenusWithStatus($tenantId);
return response()->json([
'success' => true,
@@ -396,6 +395,7 @@ public function availableGlobal(Request $request): JsonResponse
'url' => $menu->url,
'icon' => $menu->icon,
'depth' => $menu->depth ?? 0,
'is_imported' => $menu->is_imported ?? false,
];
})->values(),
]);