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

@@ -3,6 +3,7 @@
use App\Http\Controllers\Api\Admin\BoardController;
use App\Http\Controllers\Api\Admin\DailyLogController;
use App\Http\Controllers\Api\Admin\DepartmentController;
use App\Http\Controllers\Api\Admin\GlobalMenuController;
use App\Http\Controllers\Api\Admin\MenuController;
use App\Http\Controllers\Api\Admin\PermissionController;
use App\Http\Controllers\Api\Admin\ProjectManagement\ImportController as PmImportController;
@@ -135,6 +136,29 @@
Route::post('/{id}/toggle-hidden', [MenuController::class, 'toggleHidden'])->name('toggleHidden');
});
// 글로벌 메뉴 관리 API (슈퍼관리자 전용)
Route::middleware('super.admin')->prefix('global-menus')->name('global-menus.')->group(function () {
// 고정 경로
Route::post('/reorder', [GlobalMenuController::class, 'reorder'])->name('reorder');
// 기본 CRUD
Route::get('/', [GlobalMenuController::class, 'index'])->name('index');
Route::post('/', [GlobalMenuController::class, 'store'])->name('store');
Route::get('/{id}', [GlobalMenuController::class, 'show'])->name('show');
Route::put('/{id}', [GlobalMenuController::class, 'update'])->name('update');
Route::delete('/{id}', [GlobalMenuController::class, 'destroy'])->name('destroy');
// 복원
Route::post('/{id}/restore', [GlobalMenuController::class, 'restore'])->name('restore');
// 영구삭제
Route::delete('/{id}/force', [GlobalMenuController::class, 'forceDestroy'])->name('forceDestroy');
// 추가 액션
Route::post('/{id}/toggle-active', [GlobalMenuController::class, 'toggleActive'])->name('toggleActive');
Route::post('/{id}/toggle-hidden', [GlobalMenuController::class, 'toggleHidden'])->name('toggleHidden');
});
// 권한 관리 API
Route::prefix('permissions')->name('permissions.')->group(function () {
Route::get('/', [PermissionController::class, 'index'])->name('index');