메뉴 관리 기능 개선

- 트리 구조 정렬 및 표시 (무제한 depth 지원)
- 접기/펼치기 기능 추가 (재귀적 처리)
- 활성/숨김 상태 토글 기능 (실시간 업데이트)
- 테넌트 필터링 (전체 선택 시 마스터 메뉴만 표시)
- UI 개선 (토글 버튼, 외부 메뉴 표시)

추가된 파일:
- MenuService: 비즈니스 로직 처리
- MenuController (API/Web): 라우트 처리
- MenuRequest: 유효성 검증
- views/menus/: 메뉴 관리 뷰

수정된 파일:
- routes/api.php, web.php: 메뉴 라우트 추가
This commit is contained in:
2025-11-24 22:02:09 +09:00
parent 43af1a5779
commit 79aebfa148
11 changed files with 1514 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
<?php
use App\Http\Controllers\Api\Admin\DepartmentController;
use App\Http\Controllers\Api\Admin\MenuController;
use App\Http\Controllers\Api\Admin\RoleController;
use App\Http\Controllers\Api\Admin\TenantController;
use App\Http\Controllers\Api\Admin\UserController;
@@ -64,4 +65,23 @@
Route::post('/{id}/restore', [UserController::class, 'restore'])->name('restore');
Route::delete('/{id}/force', [UserController::class, 'forceDestroy'])->name('forceDestroy');
});
// 메뉴 관리 API
Route::prefix('menus')->name('menus.')->group(function () {
// 고정 경로는 먼저 정의
Route::get('/tree', [MenuController::class, 'tree'])->name('tree');
// 동적 경로는 나중에 정의
Route::get('/', [MenuController::class, 'index'])->name('index');
Route::post('/', [MenuController::class, 'store'])->name('store');
Route::get('/{id}', [MenuController::class, 'show'])->name('show');
Route::put('/{id}', [MenuController::class, 'update'])->name('update');
Route::delete('/{id}', [MenuController::class, 'destroy'])->name('destroy');
// 추가 액션
Route::post('/{id}/restore', [MenuController::class, 'restore'])->name('restore');
Route::delete('/{id}/force', [MenuController::class, 'forceDestroy'])->name('forceDestroy');
Route::post('/{id}/toggle-active', [MenuController::class, 'toggleActive'])->name('toggleActive');
Route::post('/{id}/toggle-hidden', [MenuController::class, 'toggleHidden'])->name('toggleHidden');
});
});

View File

@@ -2,6 +2,7 @@
use App\Http\Controllers\Auth\LoginController;
use App\Http\Controllers\DepartmentController;
use App\Http\Controllers\MenuController;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\TenantController;
use App\Http\Controllers\UserController;
@@ -58,6 +59,13 @@
Route::get('/{id}/edit', [UserController::class, 'edit'])->name('edit');
});
// 메뉴 관리 (Blade 화면만)
Route::prefix('menus')->name('menus.')->group(function () {
Route::get('/', [MenuController::class, 'index'])->name('index');
Route::get('/create', [MenuController::class, 'create'])->name('create');
Route::get('/{id}/edit', [MenuController::class, 'edit'])->name('edit');
});
// 대시보드
Route::get('/dashboard', function () {
return view('dashboard.index');