group(function () { // Auth Route::post('/login', [AuthController::class, 'login'])->middleware('guest')->name('login'); Route::post('/logout', [AuthController::class, 'logout'])->middleware('auth:sanctum')->name('logout'); Route::middleware(['auth:sanctum', 'role:owner'])->group(function () { Route::apiResource('nampan', NampanController::class)->except(['index', 'show']); Route::apiResource('produk', ProdukController::class)->except(['index', 'show']); Route::apiResource('item', ItemController::class)->except(['index', 'show']); Route::apiResource('sales', SalesController::class)->except(['index', 'show']); Route::apiResource('kategori', KategoriController::class)->except(['index', 'show']); Route::apiResource('user', UserController::class); Route::delete('kosongkan-nampan', [NampanController::class, 'kosongkan']); // Foto Sementara Route::post('foto/upload', [FotoSementaraController::class, 'upload']); Route::delete('foto/hapus/{id}', [FotoSementaraController::class, 'hapus']); Route::get('foto/{user_id}', [FotoSementaraController::class, 'getAll']); Route::delete('foto/reset/{user_id}', [FotoSementaraController::class, 'reset']); // Laporan Route::prefix('laporan')->group(function () { Route::get('ringkasan', [LaporanController::class, 'ringkasan']); Route::get('detail-per-produk', [LaporanController::class, 'detailPerProduk']); Route::get('detail-per-nampan', [LaporanController::class, 'detailPerNampan']); Route::get('export/ringkasan', [LaporanController::class, 'exportRingkasan']); Route::get('export/detail-pernampan', [LaporanController::class, 'exportDetailNampan']); Route::get('export/detail-perproduk', [LaporanController::class, 'exportDetailProduk']); }); }); Route::middleware(['auth:sanctum', 'role:owner,kasir'])->group(function () { Route::apiResource('transaksi', TransaksiController::class); Route::get('produk', [ProdukController::class, 'index']); Route::get('produk/{id}', [ProdukController::class, 'show']); Route::get('nampan', [NampanController::class, 'index']); Route::get('nampan/{id}', [NampanController::class, 'show']); Route::get('item', [ItemController::class, 'index']); Route::get('item/{id}', [ItemController::class, 'show']); Route::get('sales', [SalesController::class, 'index']); Route::get('sales/{id}', [SalesController::class, 'show']); Route::get('kategori', [KategoriController::class, 'index']); Route::get('kategori/{id}', [KategoriController::class, 'show']); Route::get('brankas', [ItemController::class, 'brankasItem']); }); }); // ============================ // Frontend SPA (Vue) // ============================ Route::get('/{any}', function () { return view('app'); })->where('any', '^(?!storage|api).*$');