- 트리 구조 정렬 및 표시 (무제한 depth 지원) - 접기/펼치기 기능 추가 (재귀적 처리) - 활성/숨김 상태 토글 기능 (실시간 업데이트) - 테넌트 필터링 (전체 선택 시 마스터 메뉴만 표시) - UI 개선 (토글 버튼, 외부 메뉴 표시) 추가된 파일: - MenuService: 비즈니스 로직 처리 - MenuController (API/Web): 라우트 처리 - MenuRequest: 유효성 검증 - views/menus/: 메뉴 관리 뷰 수정된 파일: - routes/api.php, web.php: 메뉴 라우트 추가
79 lines
3.1 KiB
PHP
79 lines
3.1 KiB
PHP
<?php
|
|
|
|
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;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Guest Routes (인증 불필요)
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
Route::middleware('guest')->group(function () {
|
|
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
|
|
Route::post('/login', [LoginController::class, 'login']);
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Authenticated Routes (인증 필요)
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
Route::middleware('auth')->group(function () {
|
|
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
|
|
|
|
// 테넌트 전환
|
|
Route::post('/tenant/switch', [TenantController::class, 'switch'])->name('tenant.switch');
|
|
|
|
// 테넌트 관리 (Blade 화면만)
|
|
Route::prefix('tenants')->name('tenants.')->group(function () {
|
|
Route::get('/', [TenantController::class, 'index'])->name('index');
|
|
Route::get('/create', [TenantController::class, 'create'])->name('create');
|
|
Route::get('/{id}/edit', [TenantController::class, 'edit'])->name('edit');
|
|
});
|
|
|
|
// 역할 관리 (Blade 화면만)
|
|
Route::prefix('roles')->name('roles.')->group(function () {
|
|
Route::get('/', [RoleController::class, 'index'])->name('index');
|
|
Route::get('/create', [RoleController::class, 'create'])->name('create');
|
|
Route::get('/{id}/edit', [RoleController::class, 'edit'])->name('edit');
|
|
});
|
|
|
|
// 부서 관리 (Blade 화면만)
|
|
Route::prefix('departments')->name('departments.')->group(function () {
|
|
Route::get('/', [DepartmentController::class, 'index'])->name('index');
|
|
Route::get('/create', [DepartmentController::class, 'create'])->name('create');
|
|
Route::get('/{id}/edit', [DepartmentController::class, 'edit'])->name('edit');
|
|
});
|
|
|
|
// 사용자 관리 (Blade 화면만)
|
|
Route::prefix('users')->name('users.')->group(function () {
|
|
Route::get('/', [UserController::class, 'index'])->name('index');
|
|
Route::get('/create', [UserController::class, 'create'])->name('create');
|
|
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');
|
|
})->name('dashboard');
|
|
|
|
// 루트 리다이렉트
|
|
Route::get('/', function () {
|
|
return redirect()->route('dashboard');
|
|
});
|
|
});
|