group(function () { require_once __DIR__ . '/web-shop.php'; }); } else { require_once __DIR__ . '/web-shop.php'; } // Must always be public routes. Route::get('/mentions-legales', [IndexController::class, 'legalNotice'])->name('legal-notice'); Route::get('/politique-de-confidentialite', [IndexController::class, 'privacy'])->name('privacy'); Route::namespace('App\Http\Controllers\Bo') ->prefix('bo') ->name('bo.') ->middleware(['auth', 'is-admin']) ->group( function () { Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); Route::match(['get', 'put'], '/content/{key}', [ContentController::class, 'manage'])->name('content'); Route::match(['get', 'put'], '/settings', [SettingsController::class, 'manage'])->name('settings'); Route::match( ['get', 'put'], '/themesettings', [SettingsController::class, 'manageTheme'] )->name('themesettings'); // FAQ. Route::get('/faq', [FaqController::class, 'index'])->name('faq'); Route::post('/ajax/save-faq', [FaqController::class, 'saveDatas']); Route::post('/ajax/delete-faq', [FaqController::class, 'destroy']); // Creneaux. Route::get('/magasins/{id}/creneaux', [CreneauxController::class, 'settings'])->name('creneaux.settings'); Route::post( '/magasins/{id}/creneaux', [CreneauxController::class, 'updateSettings'] )->name('creneaux.settings.update'); // Exceptions de collecte. Route::post( '/ajax/save-creneaux-exception', [\App\Http\Controllers\Bo\MagasinsController::class, 'saveExceptions'] ); Route::post( '/ajax/delete-creneaux-exception', [\App\Http\Controllers\Bo\MagasinsController::class, 'destroyExceptions'] ); // Recherche d'inco. Route::post('/ajax/check-inco-data', [\App\Http\Controllers\Bo\ProductsController::class, 'checkIncoData']); Route::post( '/ajax/get-inco-images', [\App\Http\Controllers\Bo\ProductsController::class, 'getPrepareIncoImages'] ); Route::post('/ajax/set-inco-images', [\App\Http\Controllers\Bo\ProductsController::class, 'setIncoImage']); // Produits. // Route ajoutée avant la déclaration de route resource. // Sinon la forme /products/{product} l'emporte lors du routage. Route::get( '/products/starred', [\App\Http\Controllers\Bo\ProductsController::class, 'starred'] )->name('products.starred'); Route::get( '/products/create/{product_type?}', [\App\Http\Controllers\Bo\ProductsController::class, 'create'] )->name('products.create'); Route::resource( 'products', '\App\Http\Controllers\Bo\ProductsController' )->except(['create', 'show']); Route::resource( 'slides', SlidesController::class )->except(['show']); Route::resource( 'sliders', SlidersController::class )->except(['show']); Route::resource( 'tags', TagsController::class )->except(['show']); Route::resource( 'promotions', PromotionsController::class )->except(['show']); Route::resource( 'magasins', MagasinsController::class )->except(['show']); Route::resources([ 'ranges' => RangesController::class ]); Route::get( '/slide/change-order/{id}/{action}', [App\Http\Controllers\Bo\SlidesController::class, 'changeOrder'] )->name('slides.change-order'); Route::get( '/tag/change-order/{id}/{action}', [App\Http\Controllers\Bo\TagsController::class, 'changeOrder'] )->name('tags.change-order'); Route::get( '/tag/toggle-status/{id}', [App\Http\Controllers\Bo\TagsController::class, 'toggleStatus'] )->name('tags.toggle-status'); Route::get( '/customer-info/{id}/{mode?}', [OrdersController::class, 'getCustomerInfo'] )->name('get-customer-info'); Route::get( '/magasin-info/{id}/{mode?}', [App\Http\Controllers\Bo\MagasinsController::class, 'getMagasinInfo'] )->name('get-magasin-info'); // Commandes. Route::get('/orders', [OrdersController::class, 'index'])->name('orders'); Route::get('/orders/today', [OrdersController::class, 'today'])->name('orders.today'); Route::get('/orders/{reference}', [OrdersController::class, 'orderDetail'])->name('order-detail'); Route::get( '/orders/{reference}/advance', [OrdersController::class, 'changeStatus'] )->name('change-order-status'); Route::get('/orders/{reference}/cancel', [OrdersController::class, 'cancelOrder'])->name('cancel-order'); Route::post('/orders/add', [OrdersController::class, 'addProduct'])->name('order-add-product'); } ); // Actions sur les comptes utilisateurs. Route::name('auth.') ->group( function () { // Bo connect. Route::get('/bo/login', [LoginController::class, 'index'])->name('login')->middleware('guest'); Route::post('/bo/login', [LoginController::class, 'login'])->name('login.post')->middleware('guest'); Route::get('/bo/logout', [LoginController::class, 'logout'])->name('logout')->middleware('auth:web'); // Customer connect. Route::get( '/connexion', [CustomerController::class, 'authenticateForm'] )->name('connexion')->middleware('guest'); Route::post( '/connexion', [CustomerController::class, 'authenticate'] )->name('connexion.post')->middleware('guest'); Route::get( '/deconnexion', [CustomerController::class, 'logout'] )->name('deconnexion')->middleware('auth:customer'); // Customer inscription. Route::get( '/inscription', [CustomerController::class, 'registerForm'] )->name('register')->middleware('guest'); Route::post( '/inscription', [CustomerController::class, 'register'] )->name('register.post')->middleware('guest'); Route::get('/activer/{hashcode}', [CustomerController::class, 'activate'])->name('activer'); // Formulaire de demande de réinit. Route::get('/mot-de-passe-oublie', [CustomerController::class, 'forgotPasswordForm'])->name('forgot-password'); // Réinit et envoi mail. Route::post('/reinitialiser-mdp', [CustomerController::class, 'passwordReset'])->name('reinit-mdp'); // Formulaire reinit. Route::get( '/reinitialiser-mdp/{token}', [CustomerController::class, 'viewChangePassword'] )->name('form-change-mdp'); // Changement en crm. Route::post( '/reinitialiser-mdp/{token}', [CustomerController::class, 'changePassword'] )->name('change-password'); } ); Route::name('account.') ->prefix('compte') ->middleware('auth:customer') ->group( function () { Route::get('/profil', [CustomerController::class, 'dashboard'])->name('dashboard'); Route::post('/profil', [CustomerController::class, 'updateInfos'])->name('update-infos'); Route::post( '/profil/change-mdp', [CustomerController::class, 'changePasswordWhenAuthenticated'] )->name('change-password'); Route::get('/commandes', [CustomerController::class, 'myOrders'])->name('my-orders'); Route::get('/commandes/{reference}', [CustomerController::class, 'orderDetail'])->name('order-detail'); Route::get('/commandes/{reference}/annuler', [CustomerController::class, 'cancelOrder'])->name('cancel-order'); } ); // Tunnel de commande. Route::prefix('commande') ->name('sales.') ->middleware('auth:customer') ->group(function () { // Puisqu'on a le middleware on s'épargne une étape. // Recap. Route::get('/recap', [OrdersController::class, 'recapOrder' ])->name('recap'); Route::post('/recap', [OrdersController::class, 'store' ])->name('order-init'); // Choice timeslot. Route::get('/collect/{reference}', [OrdersController::class, 'timeSlotPick' ])->name('pick-slot'); Route::post('/collect', [OrdersController::class, 'setTimeSlot' ])->name('order-save-slot'); // Confirm. Route::get('/confirm/{reference}', [OrdersController::class, 'confirmOrder' ])->name('confirm'); // Test generation de commande. Route::get('/generate/{reference}', [OrdersController::class, 'generateOrder' ])->name('generate'); });