commit 08-2025

This commit is contained in:
Kevin Adametz 2025-08-12 18:01:59 +02:00
parent 9ae662f63e
commit 480fdc65ed
404 changed files with 65310 additions and 2600431 deletions

View file

@ -1,312 +0,0 @@
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/* ROUTING FOR CRM / CMS*/
//Route::group(['domain' => '{subdomain}.mivita.local', 'middleware' => 'subdomain'], $RoutesOnlyForExamp);
/* ROUTING the SUBDOMAINS*/
/*
Route::group(['domain' => '{subdomain}.mivita.local'], $RoutesOnlyForExamp);
Route::group(['domain' => 'mivita.local'], $RoutesOnlyForExamp);
*/
/*
*/
Route::get('/data_protected', 'HomeController@legalDataProtected')->name('data_protected');
Route::get('/imprint', 'HomeController@legalImprint')->name('imprint');
Route::get('storage/images/{from}/{slug}', function($from = null, $slug = null) {
if ($from == 'shop'){
$image = \App\Models\UserShop::where('filename', $slug)->first();
$path = storage_path('app/public').'/images/shop'.'/'.$image->filename;
}
if (file_exists($path)) {
return Response::file($path);
}
})->name('storage_images');
Route::domain('mivita.local')->group(function () {
Route::get('/', 'Web\SiteController@index')->name('/');
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('site');
Route::get('/card/add/{id}/{quantity?}/{product_slug?}', 'Web\CardController@addToCardGet')->name('card_add_get');
Route::post('/card/add/{id}', 'Web\CardController@addToCardPost')->name('card_add_post');
Route::get('/card/show', 'Web\CardController@showCard')->name('card_show');
Route::get('/card/checkout', 'Web\CardController@checkoutCard')->name('card_checkout');
Route::post('/card/checkout_final', 'Web\CardController@checkoutFinalCard')->name('card_checkout_final');
Route::post('/card/update', 'Web\CardController@updateCard')->name('card_update');
Route::get('/card/remove/{rowId}', 'Web\CardController@removeCard')->name('card_remove');
Route::get('/card/delete', 'Web\CardController@deleteCard')->name('card_delete');
Route::get('product/image/{slug}', function($slug = null)
{
$image = \App\Models\ProductImage::where('slug', $slug)->first();
$path = storage_path('app/public').'/images/product'.'/'.$image->product_id.'/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
})->name('product_image');
});
Route::domain('mein.mivita.local')->group(function () {
Auth::routes();
Route::get('/logout', function(){
Auth::logout();
return Redirect::to('login');
})->name('logout');
Route::get('locale/{locale}', function ($locale) {
\Session::put('locale', $locale);
if(Auth::check()){
$user = Auth::user();
$user->lang = $locale;
$user->save();
}
return redirect()->back();
})->name('locale');
Route::post('/loading/modal', 'HomeController@loadingModal')->name('loading_modal');
Route::get('/', 'HomeController@index')->name('home');
Route::get('/user/update_email_confirm/{token}', 'UserUpdateEmailController@activateMail')->name('user_update_email_confirm');
Route::post('/user/check/mail', 'HomeController@checkMail')->name('user_check_mail');
Route::get('/register/verify/{confirmationCode}', 'HomeController@verify')->name('register_verify');
Route::get('/status/register', 'HomeController@statusRegister')->name('status_register');
Route::get('/status/verify', 'HomeController@statusVerify')->name('status_verify');
Route::get('/status/error', 'HomeController@statusError')->name('status_error');
Route::get('/status/not/found', 'HomeController@notFound')->name('not_found');
Route::group(['middleware' => ['auth']], function()
{
Route::get('storage/{type?}/{file?}', function($type = null, $file = null)
{
if($type == 'xls'){
$path = storage_path("app/export/");
$filename = $file.'.xls';
}
if (file_exists($path.$filename)) {
return Response::download($path.$filename, $filename);
}
})->name('storage');
Route::get('/home', 'HomeController@show')->name('home');
/* Route::get('/user/edit', 'UserController@userEdit')->name('user_edit');
*/
Route::get('/user/edit', 'UserDataController@userEdit')->name('user_edit');
Route::post('/user/edit', 'UserDataController@userEditStore')->name('user_edit');
Route::post('/user/data/store', 'UserDataController@userDataStore')->name('user_data_store');
Route::get('/user/update_password', 'UserUpdatePasswordController@updatePassword')->name('user_update_password');
Route::post('/user/update_password', 'UserUpdatePasswordController@updatePasswordStore')->name('user_update_password');
Route::get('/user/update_password_first', 'UserUpdatePasswordController@updatePasswordFirst')->name('user_update_password_first');
Route::post('/user/update_password_first', 'UserUpdatePasswordController@updatePasswordFirstStore')->name('user_update_password_first');
Route::get('/user/update_email', 'UserUpdateEmailController@index')->name('user_update_email');
Route::post('/user/update_email', 'UserUpdateEmailController@update')->name('user_update_email');
Route::get('/user/delete_account', 'UserDeleteController@deleteAccount')->name('user_delete_account');
Route::post('/user/delete_account', 'UserDeleteController@deleteAccountAction')->name('user_delete_account');
Route::post('/user/data/accepted/form', 'UserDataController@userDataAcceptedForm')->name('user_data_accepted_form');
Route::get('/user/data/free', 'UserDataController@userDataFree')->name('user_data_free');
Route::post('/user/data/free/form', 'UserDataController@userDataFreeForm')->name('user_data_free_form');
Route::get('/user/shop', 'UserShopController@index')->name('user_shop');
Route::post('/user/shop/store', 'UserShopController@store')->name('user_shop_store');
Route::post('/user/shop/register/form', 'UserShopController@userShopRegisterForm')->name('user_shop_register_form');
Route::post('/user/shop/name/check', 'UserShopController@checkUserShopName')->name('user_shop_name_check');
Route::post('/user/shop/upload/image', 'UserShopController@uploadImage')->name('user_shop_upload_image');
Route::get('/user/shop/delete/image', 'UserShopController@deleteImage')->name('user_shop_delete_image');
});
Route::group(['middleware' => ['admin']], function()
{
//translate
Route::get('/admin/translate/all', 'TranslationController@index')->name('admin_translate_all');
Route::get('/admin/translate/all/edit/{lang}/{from?}', 'TranslationController@edit')->name('admin_translate_all_edit');
Route::post('/admin/translate/all/update/{lang}/{from?}', 'TranslationController@update')->name('admin_translate_all_update');
Route::get('/admin/translate/file', 'TranslationFileController@index')->name('admin_translate_file');
Route::get('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@edit')->name('admin_translate_file_edit');
Route::post('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@update')->name('admin_translate_file_update');
//products
Route::get('admin/product/show', 'ProductController@index')->name('admin_product_show');
Route::post('admin/product/store', 'ProductController@store')->name('admin_product_store');
Route::get('admin/product/edit/{id}', 'ProductController@edit')->name('admin_product_edit');
Route::get('admin/product/delete/{id}', 'ProductController@delete')->name('admin_product_delete');
//products images
Route::post('admin/product/upload/image', 'ProductController@uploadImage')->name('admin_product_upload_image');
Route::get('admin/product/{image_id}/{product_id}', 'ProductController@deleteImage')->name('admin_product_delete_image');
//products categories
Route::get('admin/product/categories', 'CategoryController@index')->name('admin_product_categories');
Route::post('admin/product/category/store', 'CategoryController@store')->name('admin_product_category_store');
Route::get('admin/product/category/delete/{id}', 'CategoryController@delete')->name('admin_product_category_delete');
//products attributes
Route::get('admin/product/attributes', 'AttributeController@index')->name('admin_product_attributes');
Route::post('admin/product/attribute/store', 'AttributeController@store')->name('admin_product_attribute_store');
Route::get('admin/product/attribute/delete/{id}', 'AttributeController@delete')->name('admin_product_attribute_delete');
//Route::get('/admin/products/import', 'ImportProductController@import')->name('admin_product_import');
//leads
Route::get('datatables/leads', 'DataTableController@getLeads')->name('datatables-leads');
Route::get('/admin/leads', 'LeadController@index')->name('admin_leads');
Route::get('/admin/lead/edit/{id}', 'LeadController@edit')->name('admin_lead_edit');
Route::get('/admin/lead/change_mail/{id}', 'UserUpdateEmailController@adminChangeMail')->name('admin_lead_change_mail');
Route::post('/admin/lead/change_mail/{id}', 'UserUpdateEmailController@adminUpdateMail')->name('admin_lead_change_mail');
Route::post('/admin/lead/store', 'LeadController@store')->name('admin_lead_store');
});
//login pages for superadmin
Route::group(['middleware' => ['superadmin']], function() {
//leads
Route::get('/admin/users', 'AdminUserController@index')->name('admin_users');
Route::get('/admin/user/edit/{user_id}', 'AdminUserController@edit')->name('admin_user_edit');
Route::post('/admin/user/store', 'AdminUserController@store')->name('admin_user_store');
Route::get('/admin/user/delete/{user_id}', 'AdminUserController@deleteUser')->name('admin_user_delete');
Route::get('data_table', 'DataTableController@datatable')->name('data_table');
// Route::get('datatables/leads', 'DataTableController@getLeads')->name('datatables-leads');
Route::get('data/table/users', 'DataTableController@getUsers')->name('data_table_users');
});
});
Route::domain('{subdomain}.mivita.local')->group(function () {
Route::group(['middleware' => ['subdomain']], function() {
});
});
/*
//Route::get('/', 'HomeController@index')->name('/');
/*Route::post('/register/data', 'HomeController@register')->name('register_data');
Route::post('/user/check/mail', 'HomeController@checkMail')->name('user_check_mail');
Route::get('/register/verify/{confirmationCode}', 'HomeController@verify')->name('register_verify');
Route::get('/status/register', 'HomeController@statusRegister')->name('status_register');
Route::get('/status/verify', 'HomeController@statusVerify')->name('status_verify');
Route::get('/status/error', 'HomeController@statusError')->name('status_error');
Route::get('/user/update_email_confirm/{token}', 'UpdateEmailController@activateMail')->name('user_update_email_confirm');
*/
/*Route::get('storage/{what}/{path}/{id}/{file_name}', function($what = null, $path = null, $id = null, $file_name = null)
{
$path = storage_path().'/app/'.$path.'/'.$id.'/images/'.$what.'/'.$file_name;
if (file_exists($path)) {
return Response::file($path);
}
});
Route::get('storage/{user_id}/{file_name}', function($user_id = null, $file_name = null)
{
$path = storage_path().'/'.'app'.'/user/' . $user_id . '/verification/' . $file_name;
if (file_exists($path)) {
return Response::file($path);
}
});
*/
/*
use App\Mail\MailResetPassword;
Route::get('/send_test_email', function(){
try {
// Mail::to('kevin.adametz@me.com')->send(new MailResetPassword('asdasd', Auth::user()));
Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message) {
$message->to('kevin.adametz@me.com', 'Kevin Adametz');
$message->subject('testing Networktrips');
});
} catch (\Exception $e) {
dd($e->getMessage());
}
$fail = Mail::failures();
if(!empty($fail)) throw new \Exception('Could not send message to '.$fail[0]);
});
*/

View file

@ -13,17 +13,9 @@ use Illuminate\Http\Request;
|
*/
//Route::post('login', 'API\UserController@login');
//Route::post('register', 'API\UserController@register');
//Route::post('login', 'Api\APIController@login');
Route::get('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
Route::post('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
//Route::post('login', 'Api\AuthController@login');
Route::match(['get', 'post'], '/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
Route::get('/google/merchant/feed', 'Api\GoogleMerchantController@feed')->name('api.google_merchant_feed');

View file

@ -0,0 +1,24 @@
<?php
/*
|--------------------------------------------------------------------------
| Checkout Routes (checkout.mivita.care)
|--------------------------------------------------------------------------
|
| Diese Routen werden spezifisch für die checkout.* Domain geladen.
| Die Legal-Routen (Impressum etc.) werden von `routes/shared/common.php` bereitgestellt.
|
*/
// Die Hauptrouten für den Checkout-Prozess
Route::group(['middleware' => ['checkout']], function () {
Route::get('/checkout/card/{identifier?}', 'Web\CheckoutController@checkout')->name('checkout.checkout_card');
Route::post('/checkout/card/final', 'Web\CheckoutController@checkoutFinal')->name('checkout.checkout_card_final');
// Routen zur Behandlung des Transaktionsstatus nach der Zahlung
Route::get('/transaction/status/{status?}/{reference?}', 'Web\CheckoutController@transactionStatus')->name('checkout.transaction_status');
Route::post('/transaction/status/{status?}/{reference?}', 'Web\CheckoutController@transactionStatusPost')->name('checkout.transaction_status_post');
Route::get('/transaction/approved/{transactionId}/{reference}', 'Web\CheckoutController@transactionApproved')->name('checkout.transaction_approved');
// Catch-all Route für rechtliche Seiten wie /versandkosten, /zahlungsarten etc.
});

275
routes/web.php → routes/domains/crm.php Executable file → Normal file
View file

@ -2,126 +2,27 @@
/*
|--------------------------------------------------------------------------
| Web Routes
| CRM Routes my.mivita / CMS
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('storage/images/{from}/{slug}', function($from = null, $slug = null) {
if ($from == 'shop'){
if($image = \App\Models\UserShop::where('filename', $slug)->first()){
$path = storage_path('app/public').'/images/shop'.'/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
}
})->name('storage_images');
Route::get('/product/image/{slug}', function($slug = null)
{
if($image = \App\Models\ProductImage::where('slug', $slug)->first()){
$path = storage_path('app/public').'/images/product'.'/'.$image->product_id.'/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('product_image');
Route::get('/iq/image/{slug}', function($slug = null)
{
if($image = \App\Models\IqImage::where('slug', $slug)->first()){
$path = storage_path('app/public').'/images/iq_images/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('iq_image');
Route::get('/user_shop/image/{slug}', function($slug = null)
{
if($image = \App\Models\UserShopOnSite::where('slug', $slug)->first()){
$path = storage_path('app/public').'/images/user_shop'.'/'.$image->user_shop_id.'/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('user_shop_image');
Route::get('/shop/product/image/{slug}', function($slug = null)
{
if($image = \App\Models\ProductImage::where('slug', $slug)->first()){
$path = storage_path('app/public').'/images/product'.'/'.$image->product_id.'/'.$image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('shop_product_image');
Route::get('translation/{locale}', function ($locale) {
\Session::put('locale', $locale);
\App::setLocale($locale);
if(Auth::check()){
$user = Auth::user();
$user->lang = $locale;
$user->save();
}
return redirect()->back();
})->name('translation');
//main site mivita
Route::domain(config('app.pre_url_main').config('app.domain').config('app.tld_care'))->group(function () {
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('datenschutz');
Route::get('/impressum', 'HomeController@legalImprint')->name('impressum');
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('data_protected');
Route::get('/impressum', 'HomeController@legalImprint')->name('imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('agb');
Route::get('/kontakt', 'Web\ContactController@create')->name('contact_create');
Route::post('/kontakt', 'Web\ContactController@store')->name('contact_store');
Route::get('/registrierung', 'Web\RegisterController@index')->name('register_user');
Route::get('/reg/{member_id?}', 'Web\RegisterController@member')->name('register_user_member');
Route::post('/registrierung', 'Web\RegisterController@register')->name('register_user');
Route::get('/registrierung/finish', 'Web\RegisterController@finish')->name('register_user_finish');
Route::get('/', 'Web\SiteController@index')->name('/');
/* Route::get('/card/add/{id}/{quantity?}/{product_slug?}', 'Web\CardController@addToCardGet')->name('base.card_add_get');
Route::post('/card/add/{id}', 'Web\CardController@addToCardPost')->name('base.card_add_post');
Route::get('/card/show', 'Web\CardController@showCard')->name('base.card_show');
Route::get('/card/checkout', 'Web\CardController@checkoutCard')->name('base.card_checkout');
Route::post('/card/checkout_final', 'Web\CardController@checkoutFinalCard')->name('base.card_checkout_final');
Route::post('/card/update', 'Web\CardController@updateCard')->name('base.card_update');
Route::get('/card/remove/{rowId}', 'Web\CardController@removeCard')->name('base.card_remove');
Route::get('/card/delete', 'Web\CardController@deleteCard')->name('base.card_delete');*/
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('base.site');
});
/* ROUTING FOR CRM my.mivita / CMS*/
Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_care'))->group(function () {
Route::domain(config('app.pre_url_crm') . config('app.domain') . config('app.tld_care'))->group(function () {
Route::get('/cron/jobs/action/{action}/{key}', 'CronController@action')->name('cron_jobs_action');
Route::get('/cron/jobs/run/{key}', 'CronController@runCron')->name('cron_jobs_run');
Auth::routes();
Route::get('/logout', function(){
Route::get('/logout', function () {
Auth::logout();
return Redirect::to('login');
})->name('logout');
Route::get('/change_login', 'Auth\LoginController@showChangeLogin')->name('change_login');
Route::post('/change_login', 'Auth\LoginController@confirmChangeLogin')->name('change_login_confirm');
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('datenschutz');
Route::get('/impressum', 'HomeController@legalImprint')->name('impressum');
@ -129,8 +30,8 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/impressum', 'HomeController@legalImprint')->name('imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('agb');
Route::post('/loading/modal', 'HomeController@loadingModal')->name('loading_modal');
Route::get('/', 'HomeController@index')->name('home');
@ -151,7 +52,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/homeparty/{token?}/{gid?}', 'Web\HomepartyController@detailStore')->name('homeparty');
Route::group(['middleware' => ['auth']], function() {
Route::group(['middleware' => ['auth']], function () {
Route::get('/user_blocked', 'HomeController@blocked')->name('user_blocked');
Route::get('/wizard-create', 'WizardController@create')->name('wizard_create');
Route::get('/wizard-register', 'WizardController@register')->name('wizard_register');
@ -164,10 +65,13 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/wizard/delete/file/{id}/{relation}', 'WizardController@delete')->name('wizard_delete_file');
Route::get('/storage/file/{id}/{disk}', function($id = null, $disk = null)
{
Route::get('/storage/file/{id}/{disk}', function ($id = null, $disk = null) {
// Prüfe ob der Disk existiert und nur 'public' erlaubt ist
if($disk != 'public' || !config("filesystems.disks.{$disk}")){
abort(404);
}
$file = \App\Models\File::findOrFail($id);
$path = Storage::disk($disk)->path($file->dir.$file->filename);
$path = Storage::disk($disk)->path($file->dir . $file->filename);
if (file_exists($path)) {
return Response::file($path);
}
@ -177,17 +81,15 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
});
Route::group(['middleware' => ['auth:user']], function()
{
Route::get('storage/{type?}/{file?}', function($type = null, $file = null)
{
if($type == 'xls'){
Route::group(['middleware' => ['auth:user']], function () {
Route::get('storage/{type?}/{file?}', function ($type = null, $file = null) {
if ($type == 'xls') {
$path = storage_path("app/export/");
$filename = $file.'.xls';
$filename = $file . '.xls';
}
if (file_exists($path.$filename)) {
return Response::download($path.$filename, $filename);
if (file_exists($path . $filename)) {
return Response::download($path . $filename, $filename);
}
})->name('storage');
@ -195,9 +97,6 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/modal/load', 'ModalController@load')->name('modal_load');
/* Route::get('/user/edit', 'UserController@userEdit')->name('user_edit');
*/
Route::get('/user/edit', 'UserDataController@userEdit')->name('user_edit');
Route::post('/user/edit', 'UserDataController@userEditStore')->name('user_edit');
Route::post('/user/data/store', 'UserDataController@userDataStore')->name('user_data_store');
@ -241,10 +140,19 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/user/shop/api/orders/datatable', 'User\ShopApiController@ordersDatatable')->name('user_shop_api_orders_datatable');
//user team
Route::get('/user/team/members', 'User\TeamController@members')->name('user_team_members');
Route::get('/user/team/add/member', 'User\TeamController@addMember')->name('user_team_add_member');
Route::get('/user/team/structure/old', 'User\TeamController@structureOld')->name('user_team_structure_old');
Route::post('/user/team/structure/old', 'User\TeamController@structureOld')->name('user_team_structure_old');
Route::get('/user/team/structure', 'User\TeamController@structure')->name('user_team_structure');
Route::post('/user/team/structure', 'User\TeamController@structure')->name('user_team_structure');
Route::get('/user/team/members/show', 'User\TeamController@show')->name('user_team_members_show');
Route::post('/user/team/members/show', 'User\TeamController@show')->name('user_team_members_show');
Route::get('/user/team/members/datatable', 'User\TeamController@datatable')->name('user_team_members_datatable');
Route::get('/user/team/members/datatable-optimized', 'User\TeamController@datatableOptimized')->name('user_team_members_datatable_optimized');
Route::get('/user/team/export', 'User\TeamController@export')->name('user_team_export');
Route::post('/user/team/export/download', 'User\TeamController@userTeamExport')->name('user_team_export_download');
@ -252,13 +160,15 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/user/team/datatablePoints', 'User\TeamController@datatablePoints')->name('user_team_datatable_points');
Route::post('/user/team/load', 'User\TeamController@load')->name('user_team_load');
Route::get('/user/team/marketingplan', 'User\TeamController@marketingplan')->name('user_team_marketingplan');
Route::get('/user/abos/{view}', 'User\AboController@index')->name('user_abos');
Route::get('/user/abos/detail/{view}/{id}', 'User\AboController@detail')->name('user_abos_detail');
Route::post('/user/abos/update/{view}/{id}', 'User\AboController@update')->name('user_abos_update');
Route::get('/user/abo/datatable/{id}', 'User\AboController@datatable')->name('user_abo_datatable');
//user customers
Route::get('/user/customers', 'User\CustomerController@index')->name('user_customers');
Route::get('/user/customer/detail/{id}', 'User\CustomerController@detail')->name('user_customer_detail');
@ -267,7 +177,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/user/customer/edit/{id}', 'User\CustomerController@store')->name('user_customer_edit');
Route::get('/user/customer/datatable', 'User\CustomerController@getCustomers')->name('user_customer_datatable');
//user order & do order
Route::get('/user/orders', 'User\OrderController@index')->name('user_orders');
Route::get('/user/orders/datatable', 'User\OrderController@ordersDatatable')->name('user_orders_datatable');
@ -321,11 +231,9 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/user/downloadcenter', 'User\DownloadController@index')->name('user_downloadcenter');
Route::post('/user/downloadcenter/search', 'User\DownloadController@search')->name('user_downloadcenter_search');
});
Route::group(['middleware' => ['admin']], function()
{
Route::group(['middleware' => ['admin']], function () {
//translate
Route::get('/admin/translate/{model?}', 'TranslationController@index')->name('admin_translate');
Route::post('/admin/translate/update/{model?}/{lang?}', 'TranslationController@update')->name('admin_translate_update');
@ -372,7 +280,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/admin/product/category/image/delete{image_id}/{category_id}', 'CategoryController@imageDelete')->name('admin_product_category_image_delete');
Route::get('/admin/product/category/image/attribute/{image_id}/{attr}/{val}', 'CategoryController@imageAttribute')->name('admin_product_category_image_attribute');
//products attributes
Route::get('/admin/product/attributes', 'AttributeController@index')->name('admin_product_attributes');
Route::post('/admin/product/attribute/store', 'AttributeController@store')->name('admin_product_attribute_store');
@ -431,7 +339,7 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/admin/payments/invoice', 'PaymentInvoiceController@index')->name('admin_payments_invoice');
Route::get('/admin/payments/invoice/datatable', 'PaymentInvoiceController@datatable')->name('admin_payments_invoice_datatable');
//payments credit // Gutschriften
Route::get('/admin/payments/credit', 'PaymentCreditController@index')->name('admin_payments_credit');
Route::post('/admin/payments/credit', 'PaymentCreditController@store')->name('admin_payments_credit');
@ -439,25 +347,38 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/admin/payments/credit/create', 'PaymentCreditController@create')->name('admin_payments_credit_create');
Route::get('/admin/payments/credit/delete/{id}/{del?}', 'PaymentCreditController@delete')->name('admin_payments_credit_delete');
//products sales volume
Route::get('/admin/payments/sales/volumes', 'Admin\PaymentSalesController@index')->name('admin_payments_sales_volumes');
Route::post('/admin/payments/sales/volumes/download', 'Admin\PaymentSalesController@download')->name('admin_payments_sales_volumes_download');
Route::get('/admin/payments/sales/volumes/datatable', 'Admin\PaymentSalesController@datatable')->name('admin_payments_sales_volumes_datatable');
//products sales volume
Route::get('/admin/payments/sales/volumes', 'Admin\PaymentSalesController@index')->name('admin_payments_sales_volumes');
Route::post('/admin/payments/sales/volumes/download', 'Admin\PaymentSalesController@download')->name('admin_payments_sales_volumes_download');
Route::get('/admin/payments/sales/volumes/datatable', 'Admin\PaymentSalesController@datatable')->name('admin_payments_sales_volumes_datatable');
Route::get('/admin/payments/taxadvisor', 'PaymentTaxAdvisorController@index')->name('admin_payments_taxadvisor');
Route::post('/admin/payments/taxadvisor/download', 'PaymentTaxAdvisorController@download')->name('admin_payments_taxadvisor_download');
Route::get('/admin/payments/taxadvisor/datatable', 'PaymentTaxAdvisorController@datatable')->name('admin_payments_taxadvisor_datatable');
//business
Route::get('/admin/business/show', 'BusinessController@show')->name('admin_business_show');
Route::get('/admin/business/structure', 'BusinessController@structure')->name('admin_business_structure');
Route::post('/admin/business/structure', 'BusinessController@structure')->name('admin_business_structure');
Route::get('/admin/business/user/detail/{id}', 'BusinessController@userDetail')->name('admin_business_user_detail');
Route::post('/admin/business/user/detail/{id}', 'BusinessController@userStore')->name('admin_business_user_detail');
// Revenue Report Routes
Route::get('/admin/revenue', 'RevenueReportController@index')->name('admin_revenue');
Route::post('/admin/revenue/export', 'RevenueReportController@export')->name('admin_revenue_export');
Route::get('/admin/business/user/datatable', 'BusinessController@userDatatable')->name('admin_business_user_datatable');
//business
Route::get('/admin/business/show', 'BusinessController@show')->name('admin_business_show');
Route::get('/admin/business/structure', 'BusinessController@structure')->name('admin_business_structure');
Route::post('/admin/business/structure', 'BusinessController@structure')->name('admin_business_structure');
Route::get('/admin/business/user/detail/{id}', 'BusinessController@userDetail')->name('admin_business_user_detail');
Route::post('/admin/business/user/detail/{id}', 'BusinessController@userStore')->name('admin_business_user_detail');
Route::get('/admin/business/user/datatable', 'BusinessController@userDatatable')->name('admin_business_user_datatable');
//business optimized (for testing)
Route::get('/admin/business-optimized/show', 'BusinessControllerOptimized@show')->name('admin_business_optimized');
Route::post('/admin/business-optimized/show', 'BusinessControllerOptimized@show')->name('admin_business_optimized');
Route::get('/admin/business-optimized/structure', 'BusinessControllerOptimized@structure')->name('admin_business_optimized_structure');
Route::post('/admin/business-optimized/structure', 'BusinessControllerOptimized@structure')->name('admin_business_optimized_structure');
Route::get('/admin/business-optimized/user/detail/{id}', 'BusinessControllerOptimized@userDetail')->name('admin_business_optimized_user_detail');
Route::post('/admin/business-optimized/user/detail/{id}', 'BusinessControllerOptimized@userStore')->name('admin_business_optimized_user_detail');
Route::get('/admin/business-optimized/user/datatable', 'BusinessControllerOptimized@userDatatable')->name('admin_business_optimized_user_datatable');
//payments points // Gutschreiben
Route::get('/admin/business/points', 'BusinessPointsController@index')->name('admin_business_points');
@ -482,16 +403,15 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/admin/downloadcenter/item/store/{obj}', 'Admin\DownloadController@storeItem')->name('admin_downloadcenter_item_store');
Route::get('/admin/downloadcenter/item/delete/{obj}/{id}', 'Admin\DownloadController@deleteItem')->name('admin_downloadcenter_item_delete');
Route::get('/admin/downloadcenter/datatable', 'Admin\DownloadController@datatable')->name('admin_downloadcenter_datatable');
});
//login pages for superadmin
Route::group(['middleware' => ['superadmin']], function() {
Route::group(['middleware' => ['superadmin']], function () {
//leads
Route::get('/admin/users', 'AdminUserController@index')->name('admin_users');
Route::get('/admin/user/edit/{user_id}', 'AdminUserController@edit')->name('admin_user_edit');
Route::post('/admin/user/store', 'AdminUserController@store')->name('admin_user_store');
Route::get('/admin/user/delete/{user_id}', 'AdminUserController@deleteUser')->name('admin_user_delete');
Route::post('/admin/user/delete', 'AdminUserController@deleteUser')->name('admin_user_delete');
Route::get('/admin/user/login_as/{userId?}', 'AdminUserController@userLoginAs')->name('admin_user_login_as');
Route::get('/admin/users/datatable', 'AdminUserController@getUsers')->name('admin_user_datatable');
@ -518,11 +438,11 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::get('/admin/settings', 'SettingController@index')->name('admin_settings');
Route::post('/admin/setting/store', 'SettingController@store')->name('admin_setting_store');
});
//login pages for sysadmin
Route::group(['middleware' => ['sysadmin']], function() {
Route::group(['middleware' => ['sysadmin']], function () {
Route::get('/sysadmin/tools', 'SyS\SysController@index')->name('sysadmin_tools');
Route::get('/sysadmin/tool/{tool}', 'SyS\SysController@tool')->name('sysadmin_tool');
Route::post('/sysadmin/tool/store/{tool}', 'SyS\SysController@store')->name('sysadmin_tool_store');
@ -532,66 +452,3 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car
Route::post('/sysadmin/setting/store', 'SyS\SettingController@store')->name('sysadmin_setting_store');
});
});
/* ROUTING the checkout.mivita ... */
Route::domain(config('app.checkout_url').config('app.domain').config('app.tld_care'))->group(function () {
Route::group(['middleware' => ['checkout']], function() {
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('datenschutz');
Route::get('/impressum', 'HomeController@legalImprint')->name('impressum');
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('data_protected');
Route::get('/impressum', 'HomeController@legalImprint')->name('imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('agb');
Route::get('/checkout/card/{identifier?}', 'Web\CheckoutController@checkout')->name('checkout.checkout_card');
Route::post('/checkout/card/final', 'Web\CheckoutController@checkoutFinal')->name('checkout.checkout_card_final');
Route::get('/transaction/status/{status?}/{reference?}', 'Web\CheckoutController@transactionStatus')->name('checkout.transaction_status');
Route::post('/transaction/status/{status?}/{reference?}', 'Web\CheckoutController@transactionStatus')->name('checkout.transaction_status');
Route::get('/transaction/approved/{transactionId}/{reference}', 'Web\CheckoutController@transactionApproved')->name('checkout.transaction_approved');
});
});
$subDomainRouting = function (){
Route::group(['middleware' => ['subdomain']], function() {
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('datenschutz');
Route::get('/impressum', 'HomeController@legalImprint')->name('impressum');
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('data_protected');
Route::get('/impressum', 'HomeController@legalImprint')->name('imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('agb');
Route::get('/kontakt', 'Web\ContactController@create')->name('contact_create');
Route::post('/kontakt', 'Web\ContactController@store')->name('contact_store');
Route::get('/registrierung', 'Web\RegisterController@index')->name('register_user');
Route::get('/reg/{member_id?}', 'Web\RegisterController@member')->name('register_user_member');
Route::post('/registrierung', 'Web\RegisterController@register')->name('register_user');
Route::get('/registrierung/finish', 'Web\RegisterController@finish')->name('register_user_finish');
Route::get('/', 'Web\SiteController@index')->name('');
Route::get('/user/card/add/{id}/{quantity?}/{product_slug?}', 'Web\CardController@addToCardGet')->name('user.card_add_get');
Route::post('/user/card/add/{id}', 'Web\CardController@addToCardPost')->name('user.card_add_post');
Route::get('/user/card/show', 'Web\CardController@showCard')->name('user.card_show');
Route::get('/user/card/checkout/server', 'Web\CardController@checkoutServer')->name('user.card_checkout_server');
Route::post('/user/card/update', 'Web\CardController@updateCard')->name('user.card_update');
Route::get('/user/card/remove/{rowId}', 'Web\CardController@removeCard')->name('user.card_remove');
Route::get('/user/card/delete', 'Web\CardController@deleteCard')->name('user.card_delete');
Route::get('/user/back/to/shop/{reference?}', 'Web\CardController@backToShop')->name('user.back_to_shop');
Route::get('/domain/check', 'Web\SiteController@domainCheck')->name('user.domain_check');
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('user.site');
Route::post('/change_website_lang', 'Web\SiteController@changeLang')->name('change_website_lang');
});
};
/* ROUTING the SUBDOMAINS user.mivita.care ... */
Route::domain('{subdomain}.'.config('app.domain').config('app.tld_care'))->group($subDomainRouting);
/* ROUTING the mivita.shop ... */
Route::domain(config('app.domain').config('app.tld_shop'))->group($subDomainRouting);

26
routes/domains/main.php Normal file
View file

@ -0,0 +1,26 @@
<?php
/*
|--------------------------------------------------------------------------
| Main Website Routes (mivita.care)
|--------------------------------------------------------------------------
|
*/
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('datenschutz');
Route::get('/impressum', 'HomeController@legalImprint')->name('impressum');
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('data_protected');
Route::get('/impressum', 'HomeController@legalImprint')->name('imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('agb');
Route::get('/kontakt', 'Web\ContactController@create')->name('contact_create');
Route::post('/kontakt', 'Web\ContactController@store')->name('contact_store');
Route::get('/registrierung', 'Web\RegisterController@index')->name('register_user');
Route::get('/reg/{member_id?}', 'Web\RegisterController@member')->name('register_user_member');
Route::post('/registrierung', 'Web\RegisterController@register')->name('register_user');
Route::get('/registrierung/finish', 'Web\RegisterController@finish')->name('register_user_finish');
Route::get('/', 'Web\SiteController@index')->name('/');
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('base.site');

57
routes/domains/portal.php Normal file
View file

@ -0,0 +1,57 @@
<?php
/*
|--------------------------------------------------------------------------
| Main Website Routes (mivita.care)
|--------------------------------------------------------------------------
|
*/
use App\Http\Controllers\Portal\AboController;
use App\Http\Controllers\Portal\Auth\LoginController;
use App\Http\Controllers\Portal\CustomerController;
use App\Http\Controllers\Portal\InController;
use App\Http\Controllers\Portal\OrderController;
/* ROUTING FOR CRM my.mivita / CMS*/
Route::domain(config('app.pre_url_portal') . config('app.domain') . config('app.tld_care'))->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/show/{id}', [OrderController::class, 'myOrderShow'])->name('portal.my_orders.show');
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::get('portal/settings', [InController::class, 'settings'])->name('portal.settings');
// Weitere Kunden-spezifische Routen
});
// Logout für Kunden
// Logout für Kunden
});

29
routes/domains/shop.php Normal file
View file

@ -0,0 +1,29 @@
<?php
/*
|--------------------------------------------------------------------------
| Main Shop Routes (mivita.shop)
|--------------------------------------------------------------------------
*/
Route::get('/', 'Web\SiteController@index')->name('shop.home');
Route::get('/home', 'Web\SiteController@index')->name('shop.home');
Route::get('/registrierung', 'Web\RegisterController@index')->name('shop.register_user');
Route::get('/reg/{member_id?}', 'Web\RegisterController@member')->name('shop.register_user_member');
Route::post('/registrierung', 'Web\RegisterController@register')->name('shop.register_user_post');
Route::get('/registrierung/finish', 'Web\RegisterController@finish')->name('shop.register_user_finish');
Route::get('/', 'Web\SiteController@index')->name('shop.home');
Route::get('/user/card/add/{id}/{quantity?}/{product_slug?}', 'Web\CardController@addToCardGet')->name('shop.card_add_get');
Route::post('/user/card/add/{id}', 'Web\CardController@addToCardPost')->name('shop.card_add_post');
Route::get('/user/card/show', 'Web\CardController@showCard')->name('shop.card_show');
Route::get('/user/card/checkout/server', 'Web\CardController@checkoutServer')->name('shop.card_checkout_server');
Route::post('/user/card/update', 'Web\CardController@updateCard')->name('shop.card_update');
Route::get('/user/card/remove/{rowId}', 'Web\CardController@removeCard')->name('shop.card_remove');
Route::get('/user/card/delete', 'Web\CardController@deleteCard')->name('shop.card_delete');
Route::get('/user/back/to/shop/{reference?}', 'Web\CardController@backToShop')->name('shop.back_to_shop');
Route::get('/domain/check', 'Web\SiteController@domainCheck')->name('shop.domain_check');
// Diese Route muss am Ende stehen, da sie sehr breit gefasst ist.
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('shop.site');

View file

@ -0,0 +1,29 @@
<?php
/*
|--------------------------------------------------------------------------
| User-Shop Routes ({subdomain}.mivita.care)
|--------------------------------------------------------------------------
*/
Route::get('/', 'Web\SiteController@index')->name('home');
Route::get('/home', 'Web\SiteController@index')->name('home');
Route::get('/registrierung', 'Web\RegisterController@index')->name('user-shop.register_user');
Route::get('/reg/{member_id?}', 'Web\RegisterController@member')->name('user-shop.register_user_member');
Route::post('/registrierung', 'Web\RegisterController@register')->name('user-shop.register_user_post');
Route::get('/registrierung/finish', 'Web\RegisterController@finish')->name('user-shop.register_user_finish');
Route::get('/', 'Web\SiteController@index')->name('user-shop.home');
Route::get('/user/card/add/{id}/{quantity?}/{product_slug?}', 'Web\CardController@addToCardGet')->name('user-shop.card_add_get');
Route::post('/user/card/add/{id}', 'Web\CardController@addToCardPost')->name('user-shop.card_add_post');
Route::get('/user/card/show', 'Web\CardController@showCard')->name('user-shop.card_show');
Route::get('/user/card/checkout/server', 'Web\CardController@checkoutServer')->name('user-shop.card_checkout_server');
Route::post('/user/card/update', 'Web\CardController@updateCard')->name('user-shop.card_update');
Route::get('/user/card/remove/{rowId}', 'Web\CardController@removeCard')->name('user-shop.card_remove');
Route::get('/user/card/delete', 'Web\CardController@deleteCard')->name('user-shop.card_delete');
Route::get('/user/back/to/shop/{reference?}', 'Web\CardController@backToShop')->name('user-shop.back_to_shop');
Route::get('/domain/check', 'Web\SiteController@domainCheck')->name('user-shop.domain_check');
// Diese Route muss am Ende stehen, da sie sehr breit gefasst ist.
Route::get('/{site}/{subsite?}/{product_slug?}', 'Web\SiteController@site')->name('user-shop.site');

201
routes/shared/common.php Normal file
View file

@ -0,0 +1,201 @@
<?php
/*
|--------------------------------------------------------------------------
| Geteilte Routen (Shared Routes)
|--------------------------------------------------------------------------
|
| Diese Routen sind auf allen Domains verfügbar, die die 'web' Middleware-Gruppe
| verwenden. Sie werden vom RouteServiceProvider geladen.
|
*/
// Rechtliche und Kontakt-Routen - Umleitung zur Shop-Domain für checkout.*
$context = app(\App\Domain\DomainContext::class);
if ($context->type === 'checkout') {
// Für Checkout-Domain: Umleitung zur Shop-Domain
Route::get('/datenschutz', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/datenschutz');
return redirect()->away($shopUrl);
})->name('legal.data-protected');
Route::get('/impressum', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/impressum');
return redirect()->away($shopUrl);
})->name('legal.imprint');
Route::get('/agb', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/agb');
return redirect()->away($shopUrl);
})->name('legal.agb');
Route::get('/kontakt', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/kontakt');
return redirect()->away($shopUrl);
})->name('contact.create');
Route::get('/zahlungsarten', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/zahlungsarten');
return redirect()->away($shopUrl);
})->name('zahlungsarten');
Route::get('/versandkosten', function () {
$domainService = app(\App\Services\DomainService::class);
$shopUrl = $domainService->buildUrl('main-shop', '/versandkosten');
return redirect()->away($shopUrl);
})->name('versandkosten');
} else {
// Für alle anderen Domains: normale Controller-Routen
Route::get('/datenschutz', 'HomeController@legalDataProtected')->name('legal.data-protected');
Route::get('/impressum', 'HomeController@legalImprint')->name('legal.imprint');
Route::get('/agb', 'HomeController@legalAGB')->name('legal.agb');
Route::get('/kontakt', 'Web\ContactController@create')->name('contact.create');
Route::post('/kontakt', 'Web\ContactController@store')->name('contact.store');
Route::get('/zahlungsarten', 'HomeController@zahlungsarten')->name('zahlungsarten');
Route::get('/versandkosten', 'HomeController@versandkosten')->name('versandkosten');
}
//debug subdomain
Route::get('/debug-subdomain', function () {
$domainContext = app(\App\Domain\DomainContext::class);
$domainService = app(\App\Services\DomainService::class);
return response()->json([
'host' => request()->getHost(),
'headers' => [
'X-Forwarded-Host' => request()->header('X-Forwarded-Host'),
'X-Subdomain' => request()->header('X-Subdomain'),
'Host' => request()->header('Host'),
],
'url' => request()->url(),
'full_url' => request()->fullUrl(),
'server' => [
'HTTP_HOST' => $_SERVER['HTTP_HOST'] ?? 'not set',
'SERVER_NAME' => $_SERVER['SERVER_NAME'] ?? 'not set',
],
'domain_context' => [
'type' => $domainContext->type,
'host' => $domainContext->host,
'subdomain' => $domainContext->subdomain,
'cloudflare_subdomain' => $domainContext->cloudflareSubdomain,
'effective_subdomain' => $domainContext->getEffectiveSubdomain(),
'is_cloudflare' => $domainContext->isCloudflareSubdomain(),
'is_user_shop' => $domainContext->isUserShop(),
'user_shop_slug' => $domainContext->getUserShopSlug(),
],
'parsed_domain' => $domainService->parseDomain(request()->getHost(), request()->header('X-Subdomain'))
]);
});
// Sprachwechsler
Route::post('/change_website_lang', 'Web\SiteController@changeLang')->name('language.change');
// Route für den Sprachwechsel (aus alter utility.php wiederhergestellt)
Route::get('translation/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
// Optional: Sprache für eingeloggte Benutzer speichern
if (auth()->guard('user')->check()) {
auth()->guard('user')->user()->update(['lang' => $locale]);
}
if (auth()->guard('customers')->check()) {
auth()->guard('customers')->user()->update(['language' => $locale]);
}
return redirect()->back();
})->name('translation');
// Bild-Routen (aus alter utility.php wiederhergestellt)
Route::get('/product/image/{slug}', function ($slug = null) {
if ($image = \App\Models\ProductImage::where('slug', 'like', $slug)->first()) {
$path = storage_path('app/public') . '/images/product' . '/' . $image->product_id . '/' . $image->filename;
if (file_exists($path)) {
return response()->file($path);
}
}
abort(404);
})->name('product_image');
Route::get('storage/images/{from}/{slug}', function ($from = null, $slug = null) {
if ($from == 'shop') {
if ($image = \App\Models\UserShop::where('filename', $slug)->first()) {
$path = storage_path('app/public') . '/images/shop' . '/' . $image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
}
})->name('storage_images');
Route::get('/iq/image/{slug}', function ($slug = null) {
if ($image = \App\Models\IqImage::where('slug', $slug)->first()) {
$path = storage_path('app/public') . '/images/iq_images/' . $image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('iq_image');
Route::get('/user_shop/image/{slug}', function ($slug = null) {
if ($image = \App\Models\UserShopOnSite::where('slug', $slug)->first()) {
$path = storage_path('app/public') . '/images/user_shop' . '/' . $image->user_shop_id . '/' . $image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('user_shop_image');
Route::get('/shop/product/image/{slug}', function ($slug = null) {
if ($image = \App\Models\ProductImage::where('slug', $slug)->first()) {
$path = storage_path('app/public') . '/images/product' . '/' . $image->product_id . '/' . $image->filename;
if (file_exists($path)) {
return Response::file($path);
}
}
})->name('shop_product_image');
// Alias für /home, damit auch /home erreichbar ist
// Checkout-Weiterleitung nur für Domains, die NICHT checkout.* sind
$context = app(\App\Domain\DomainContext::class);
if ($context->type !== 'checkout') {
Route::get('/checkout/card/{identifier?}', function ($identifier = null) {
$domainService = app(\App\Services\DomainService::class);
$checkoutUrl = $domainService->buildUrl('checkout', '/checkout/card/' . $identifier, null);
return redirect()->away($checkoutUrl);
})->name('checkout.checkout_card');
Route::post('/checkout/card/final', function () {
$domainService = app(\App\Services\DomainService::class);
$checkoutUrl = $domainService->buildUrl('checkout', '/checkout/card/final', null);
return redirect()->away($checkoutUrl);
})->name('checkout.checkout_card_final');
// Weiterleitung für Transaktionsstatus
Route::get('/transaction/status/{status?}/{reference?}', function ($status = null, $reference = null) {
$domainService = app(\App\Services\DomainService::class);
$checkoutUrl = $domainService->buildUrl('checkout', "/transaction/status/{$status}/{$reference}", null);
return redirect()->away($checkoutUrl);
})->name('checkout.transaction_status');
Route::post('/transaction/status/{status?}/{reference?}', function ($status = null, $reference = null) {
$domainService = app(\App\Services\DomainService::class);
$checkoutUrl = $domainService->buildUrl('checkout', "/transaction/status/{$status}/{$reference}", null);
return redirect()->away($checkoutUrl);
})->name('checkout.transaction_status_post');
Route::get('/transaction/approved/{transactionId}/{reference}', function ($transactionId, $reference) {
$domainService = app(\App\Services\DomainService::class);
$checkoutUrl = $domainService->buildUrl('checkout', "/transaction/approved/{$transactionId}/{$reference}", null);
return redirect()->away($checkoutUrl);
})->name('checkout.transaction_approved');
}