132 lines
6.9 KiB
PHP
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']);
|
|
});
|
|
});
|