ldc-boutique-cnc-sable/routes/web-fo.php
2026-10-27 09:58:12 +01:00

103 lines
5.4 KiB
PHP

<?php
declare(strict_types=1);
use App\Http\Controllers\Fo\Auth\ForgotPasswordController;
use App\Http\Controllers\Fo\Auth\LoginController;
use App\Http\Controllers\Fo\Auth\RegisterController;
use App\Http\Controllers\Fo\Auth\ResetPasswordController;
use App\Http\Controllers\Fo\Auth\VerificationController;
use App\Http\Controllers\Fo\Customers\CustomerController;
use App\Http\Controllers\Fo\Customers\OrderController;
use App\Http\Controllers\Fo\Customers\PasswordController;
use App\Http\Controllers\Fo\NewsletterController;
use App\Http\Controllers\Fo\Pages\ContactController;
use App\Http\Controllers\Fo\Pages\HomeController;
use App\Http\Controllers\Fo\Pages\PageController;
use App\Http\Controllers\Fo\Pages\ProductsController;
use App\Http\Controllers\Fo\TunnelController;
use App\Providers\RouteServiceProvider;
use Illuminate\Support\Facades\Route;
// * AUTH
Route::name('auth.')->prefix('auth')->middleware(
'throttle:' . RouteServiceProvider::ROUTE_GROUP_WEB_CREDENTIALS
)->group(function (): void {
Route::get('connexion', [LoginController::class, 'showLoginForm'])->name('connexion');
Route::post('connexion', [LoginController::class, 'login'])->name('connexion.post');
Route::get('inscription', [RegisterController::class, 'showForm'])->name('register');
Route::post('inscription', [RegisterController::class, 'submitForm'])->name('register.post');
Route::get('mot-de-passe-oublie', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('ask-reset-password');
Route::post('mot-de-passe-oublie', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('ask-reset-password.post');
Route::get('reinitialiser-mdp/{token}', [ResetPasswordController::class, 'showResetForm'])->name('reset-password');
Route::post('reinitialiser-mdp/{token}', [ResetPasswordController::class, 'reset'])->name('reset-password.post');
Route::get('email/verify', [VerificationController::class, 'show'])->name('verification.notice');
Route::get('email/verify/{id}/{hash}', [VerificationController::class, 'verify'])->name('verification.verify');
Route::post('email/resend', [VerificationController::class, 'resend'])->name('verification.resend');
Route::post('deconnexion', [LoginController::class, 'logout'])->name('deconnexion');
});
// * CUSTOMER AUTHENTICATED
Route::middleware(['auth:frontend', 'verified', 'is-employed'])->group(function (): void {
// * ACCOUNT
Route::name('account.')->prefix('compte')->group(function (): void {
// * DASHBOARD
Route::get('/', [CustomerController::class, 'dashboard'])->name('dashboard');
// * CUSTOMER
Route::name('edit.')->group(function (): void {
// * INFOS
Route::get('profil', [CustomerController::class, 'editInfos'])->name('infos.show');
Route::post('profil', [CustomerController::class, 'editInfosSubmit'])->name('infos.update');
// * SECURITY
Route::get('mot-de-passe', [PasswordController::class, 'editPassword'])->name('password.show');
Route::post('mot-de-passe', [PasswordController::class, 'editPasswordSubmit'])->name('password.update');
});
// * ORDERS
Route::get('commandes', [OrderController::class, 'index'])->name('orders.index');
Route::get('commandes/{order:reference}', [OrderController::class, 'show'])->name('orders.show');
});
// * ORDER TUNNEL
Route::prefix('commande')->name('sales.')->group(function (): void {
// * 1. BASKET
Route::get('panier', [TunnelController::class, 'basketSummary'])->name('summary');
Route::post('panier', [TunnelController::class, 'basketSummarySubmit'])->name('summary.submit');
// * 2. TIME SLOT
Route::get('creneaux', [TunnelController::class, 'pickTimeSlot'])->name('pick-time-slot');
Route::post('creneaux', [TunnelController::class, 'pickTimeSlotSubmit'])->name('pick-time-slot.submit');
// * 3. CONFIRMATION & CHECKOUT
Route::get('confirmation', [TunnelController::class, 'confirmation'])->name('confirmation');
Route::post('confirmation', [TunnelController::class, 'confirmationSubmit'])->name('confirmation.submit');
// * 4. CONFIRMATION DONE
Route::get('confirmation/{order:reference}', [TunnelController::class, 'confirmed'])->name('confirmation.show-confirmed');
});
});
// * PUBLIC
Route::group([], function (): void {
// * PAGES
Route::get('/', [HomeController::class, 'index'])->name('pages.home');
Route::get('cgv', [PageController::class, 'terms'])->name('pages.terms');
Route::get('faq', [PageController::class, 'faq'])->name('pages.faq');
Route::get('mentions-legales', [PageController::class, 'legalNotice'])->name('pages.legal-notice');
Route::get('charte-de-confidentialite', [PageController::class, 'privacy'])->name('pages.privacy');
// * CONTACT PAGE
Route::get('contactez-nous', [ContactController::class, 'showForm'])->name('pages.contact');
Route::post('contactez-nous', [ContactController::class, 'submitForm'])->name('pages.contact.submit');
// * PRODUCTS
Route::get('produits', [ProductsController::class, 'index'])->name('products.index');
Route::get('produit/{productWithPricingPublished}', [ProductsController::class, 'view'])->name('products.show');
// * NEWSLETTER
Route::get('unsubscribe', [NewsletterController::class, 'unsubscribe'])->name('newsletter.unsubscribe');
});