63 lines
3.7 KiB
PHP

<?php
use App\Http\Controllers\LoginController;
use App\Http\Controllers\ProductController;
use App\Http\Controllers\ProductExportController;
use App\Http\Controllers\statsController;
use App\Http\Controllers\StockLogController;
use App\Http\Middleware\Authenticate;
use Illuminate\Support\Facades\Route;
// ① 기본 URL: 로그인 된 사용자만 접근 가능, 아니면 /login 으로 리다이렉트
Route::get('/', function () {
$totalProducts = \App\Models\Product::count();
$totalStock = \App\Models\Product::sum('quantity');
$recentHistory = \App\Models\StockLog::with('product')->latest()->take(5)->get();
return view('dashboard', compact('totalProducts', 'totalStock', 'recentHistory'));
})->middleware(Authenticate::class)->name('dashboard');
// 로그인 관련 라우트 (비로그인 사용자 접근 가능)
Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('/login', [LoginController::class, 'login'])->name('login.process');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');
// 인증된 사용자만 접근 가능한 그룹
Route::middleware([Authenticate::class])->group(function () {
// 대시보드 (위에서 정의했지만 명시적으로 그룹에 포함 가능, 또는 별도 유지)
// Route::get('/dashboard', ...);
// 상품 관련
Route::get('/product/input', [ProductController::class, 'input'])->name('product.input');
Route::post('/product/input', [ProductController::class, 'store'])->name('product.store');
Route::get('/product', [ProductController::class, 'index'])->name('product');
Route::delete('/product/{id}', [ProductController::class, 'destroy'])->name('product.delete');
Route::get('/product/{product}/edit', [ProductController::class, 'edit'])->name('product.edit');
Route::put('/product/{product}', [ProductController::class, 'update'])->name('product.update');
Route::get('/product/export', ProductExportController::class)->name('products.export');
// 입출고 관련
Route::get('/stock/input/{id}', [StockLogController::class, 'input'])->name('stock.input');
Route::post('/stock/input/{id}', [StockLogController::class, 'store'])->name('stock.store');
Route::get('/stock', [StockLogController::class, 'index'])->name('stock.list');
// 통계
Route::get('/stats', [statsController::class, 'index'])->name('stats');
// 관리자 전용 설정
Route::middleware([\App\Http\Middleware\IsAdmin::class])->group(function () {
// 카테고리 관리
Route::get('/settings/categories', [App\Http\Controllers\CategoryController::class, 'index'])->name('settings.categories.index');
Route::post('/settings/categories', [App\Http\Controllers\CategoryController::class, 'store'])->name('settings.categories.store');
Route::delete('/settings/categories/{category}', [App\Http\Controllers\CategoryController::class, 'destroy'])->name('settings.categories.destroy');
// 사용자 관리 (추후 구현 예정)
Route::get('/settings/users', [App\Http\Controllers\UserController::class, 'index'])->name('settings.users.index');
Route::get('/settings/users/create', [App\Http\Controllers\UserController::class, 'create'])->name('settings.users.create');
Route::post('/settings/users', [App\Http\Controllers\UserController::class, 'store'])->name('settings.users.store');
Route::delete('/settings/users/{user}', [App\Http\Controllers\UserController::class, 'destroy'])->name('settings.users.destroy');
Route::patch('/settings/users/{user}/promote', [App\Http\Controllers\UserController::class, 'promote'])->name('settings.users.promote');
});
});