Files
tehnobox/routes/web.php
ssww23 93a655235a
Some checks failed
Deploy / deploy (push) Has been cancelled
Initial commit
2026-03-10 00:55:37 +03:00

132 lines
6.9 KiB
PHP

<?php
use App\Http\Controllers\Admin\AdminAuthController;
use App\Http\Controllers\Admin\AdminDashboardController;
use App\Http\Controllers\Admin\CategoryController as AdminCategoryController;
use App\Http\Controllers\Admin\ChatController as AdminChatController;
use App\Http\Controllers\Admin\HomeSlideController as AdminHomeSlideController;
use App\Http\Controllers\Admin\OrderController as AdminOrderController;
use App\Http\Controllers\Admin\ProductController as AdminProductController;
use App\Http\Controllers\SitemapController;
use App\Http\Controllers\Shop\AccountController;
use App\Http\Controllers\Shop\AuthController;
use App\Http\Controllers\Shop\CartController;
use App\Http\Controllers\Shop\CatalogController;
use App\Http\Controllers\Shop\ChatController as ShopChatController;
use App\Http\Controllers\Shop\CheckoutController;
use App\Http\Controllers\Shop\CompareController;
use App\Http\Controllers\Shop\ContactController;
use App\Http\Controllers\Shop\FavoriteController;
use App\Http\Controllers\Shop\OrderController;
use App\Http\Controllers\Shop\ProductController;
use App\Http\Controllers\Shop\ShopController;
use Illuminate\Support\Facades\Route;
Route::get('/sitemap.xml', [SitemapController::class, 'index'])->name('sitemap');
Route::get('/robots.txt', function () {
$content = implode(PHP_EOL, [
'User-agent: *',
'Allow: /',
'Disallow: /admin',
'Disallow: /search',
'Disallow: /favorites',
'Disallow: /compare',
'Disallow: /cart',
'Disallow: /checkout',
'Disallow: /account',
'Disallow: /login',
'Disallow: /register',
'Sitemap: ' . route('sitemap'),
]);
return response($content, 200, ['Content-Type' => 'text/plain; charset=UTF-8']);
})->name('robots');
Route::get('/', [ShopController::class, 'home'])->name('home');
Route::get('/search', [CatalogController::class, 'search'])->name('search.index');
Route::get('/catalog', [CatalogController::class, 'index'])->name('catalog.index');
Route::get('/category/{category:slug}', [CatalogController::class, 'category'])->name('catalog.category');
Route::get('/products/{product:slug}', [ProductController::class, 'show'])->name('products.show');
Route::get('/chat/messages', [ShopChatController::class, 'messages'])
->middleware('throttle:chat-read')
->name('chat.messages');
Route::post('/chat/messages', [ShopChatController::class, 'store'])
->middleware('throttle:chat-send')
->name('chat.send');
Route::get('/favorites', [FavoriteController::class, 'index'])->name('favorites.index');
Route::post('/favorites/{product}', [FavoriteController::class, 'toggle'])->name('favorites.toggle');
Route::get('/compare', [CompareController::class, 'index'])->name('compare.index');
Route::post('/compare/{product}', [CompareController::class, 'toggle'])->name('compare.toggle');
Route::delete('/compare', [CompareController::class, 'clear'])->name('compare.clear');
Route::get('/cart', [CartController::class, 'index'])->name('cart.index');
Route::post('/cart/{product}', [CartController::class, 'add'])->name('cart.add');
Route::patch('/cart/{product}', [CartController::class, 'update'])->name('cart.update');
Route::delete('/cart/{product}', [CartController::class, 'remove'])->name('cart.remove');
Route::get('/checkout', [CheckoutController::class, 'show'])->name('checkout.show');
Route::post('/checkout/requisites', [CheckoutController::class, 'prepare'])->name('checkout.prepare');
Route::get('/checkout/requisites', [CheckoutController::class, 'payment'])->name('checkout.payment');
Route::post('/checkout', [CheckoutController::class, 'store'])->name('checkout.store');
Route::get('/checkout/success/{order}', [CheckoutController::class, 'success'])->name('checkout.success');
Route::view('/about', 'pages.about')->name('pages.about');
Route::view('/contacts', 'pages.contacts')->name('pages.contacts');
Route::post('/contacts', [ContactController::class, 'submit'])
->middleware('throttle:contact-send')
->name('pages.contacts.submit');
Route::view('/shipping-payment', 'pages.shipping-payment')->name('pages.shipping-payment');
Route::middleware('guest')->group(function () {
Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login');
Route::post('/login', [AuthController::class, 'login'])
->middleware('throttle:auth')
->name('login.attempt');
Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register');
Route::post('/register', [AuthController::class, 'register'])
->middleware('throttle:auth')
->name('register.store');
});
Route::post('/logout', [AuthController::class, 'logout'])->name('logout')->middleware('auth');
Route::middleware('auth')->group(function () {
Route::get('/account', [AccountController::class, 'show'])->name('account');
Route::post('/account', [AccountController::class, 'update'])->name('account.update');
Route::get('/account/orders/{order}', [OrderController::class, 'show'])->name('account.orders.show');
});
Route::prefix('admin')->name('admin.')->group(function () {
Route::get('login', [AdminAuthController::class, 'showLoginForm'])->name('login');
Route::post('login', [AdminAuthController::class, 'login'])
->middleware('throttle:admin-login')
->name('login.attempt');
Route::middleware([\App\Http\Middleware\AdminMiddleware::class])->group(function () {
Route::post('logout', [AdminAuthController::class, 'logout'])->name('logout');
Route::get('/', [AdminDashboardController::class, 'index'])->name('dashboard');
Route::get('chats', [AdminChatController::class, 'index'])->name('chats.index');
Route::get('chats/{conversation}/messages', [AdminChatController::class, 'messages'])
->middleware('throttle:admin-chat-read')
->name('chats.messages');
Route::post('chats/{conversation}/messages', [AdminChatController::class, 'storeMessage'])
->middleware('throttle:admin-chat-send')
->name('chats.messages.store');
Route::patch('chats/{conversation}/status', [AdminChatController::class, 'updateStatus'])
->name('chats.status');
Route::delete('chats/{conversation}', [AdminChatController::class, 'destroy'])
->name('chats.destroy');
Route::get('products/export/csv', [AdminProductController::class, 'exportCsv'])->name('products.export');
Route::post('products/import/csv', [AdminProductController::class, 'importCsv'])->name('products.import');
Route::resource('home-slides', AdminHomeSlideController::class)
->parameters(['home-slides' => 'homeSlide'])
->except('show');
Route::resource('products', AdminProductController::class)->except('show');
Route::resource('categories', AdminCategoryController::class)->except('show');
Route::resource('orders', AdminOrderController::class)->only(['index', 'show', 'update']);
});
});