group(function () { Route::get('/', [InController::class, 'index'])->name('/portal.home'); Route::post('/loading/modal', [InController::class, 'loadingModal'])->name('portal.loading_modal'); Route::get('portal/change-login', [InController::class, 'changeLogin'])->name('portal.change_login'); // Standard login route für Laravel Auth-Kompatibilität Route::get('login', function () { return redirect()->route('portal.login.form'); })->name('login'); Route::get('portal/login', [LoginController::class, 'showLoginForm'])->name('portal.login.form'); Route::post('portal/login/send-otp', [LoginController::class, 'sendOtp'])->name('portal.login.send-otp'); Route::get('portal/login/verify/{email?}/{otp?}', [LoginController::class, 'showOtpForm'])->name('portal.login.otp.form'); // Zeigt OTP-Eingabeformular Route::post('portal/login/verify', [LoginController::class, 'verifyOtpAndLogin'])->name('portal.login.verify-otp'); Route::get('portal/logout', [LoginController::class, 'logout'])->name('portal.logout'); Route::post('portal/logout-change', [LoginController::class, 'logoutChange'])->name('portal.logout_change'); // Geschützte Kunden-Routen Route::middleware('auth:customers')->group(function () { Route::get('portal/dashboard', [InController::class, 'dashboard'])->name('portal.dashboard'); // Route::get('portal/go-to-shop', [InController::class, 'goToShop'])->name('portal.go_to_shop'); Route::get('portal/my-data/edit', [CustomerController::class, 'myDataEdit'])->name('portal.my_data.edit'); Route::post('portal/my-data/store', [CustomerController::class, 'myDataStore'])->name('portal.my_data.store'); Route::get('portal/my-orders', [OrderController::class, 'myOrders'])->name('portal.my_orders'); Route::get('portal/my-orders/datatable', [OrderController::class, 'ordersDatatable'])->name('portal.my_orders.datatable'); Route::get('portal/my-orders/show/{id}', [OrderController::class, 'myOrderShow'])->name('portal.my_orders.show'); Route::get('portal/my-orders/{id}/payments/datatable', [OrderController::class, 'paymentsDatatable'])->name('portal.my_orders.payments_datatable'); Route::get('portal/my-orders/create/{id}', [OrderController::class, 'myOrderCreate'])->name('portal.my_orders.create'); Route::get('portal/my-subscriptions', [AboController::class, 'myAbo'])->name('portal.my_subscriptions'); Route::match(['get', 'post'], 'portal/my-subscriptions/create/{step}', [AboController::class, 'myAboCreate'])->name('portal.my_subscriptions.create'); Route::post('portal/my-subscriptions/update/{view}/{id}', [AboController::class, 'update'])->name('user_abos_update'); Route::post('portal/my-subscriptions/onetime/{view}/{id}', [AboController::class, 'oneTime'])->name('user_abos_onetime'); Route::post('portal/my-subscriptions/retry-payment/{id}', [AboController::class, 'retryPayment'])->name('portal_abos_retry_payment'); Route::get('portal/my-subscriptions/datatable/{id}', [AboController::class, 'datatable'])->name('user_abo_datatable'); Route::get('portal/my-subscriptions/onetime-datatable/{id}', [AboController::class, 'oneTimeDatatable'])->name('user_abo_onetime_datatable'); Route::post('portal/modal/load', [AboController::class, 'modalLoad'])->name('modal_load'); // Routen-Aliase für shared Views (admin.abo._detail, admin.abo._executions) Route::get('portal/my-data/edit/{id?}', function () { return redirect()->route('portal.my_data.edit'); })->name('user_customer_edit'); Route::get('portal/my-orders/detail/{id}', [OrderController::class, 'myOrderShow'])->name('user_shop_order_detail'); Route::get('portal/settings', [InController::class, 'settings'])->name('portal.settings'); // Weitere Kunden-spezifische Routen }); // Logout für Kunden // Logout für Kunden });