63 lines
3.7 KiB
PHP
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');
|
|
});
|
|
});
|