First commit

This commit is contained in:
Kevin Adametz 2025-10-20 17:50:35 +02:00
commit 7cf3558ba7
12933 changed files with 1180047 additions and 0 deletions

29
routes/admin.php Normal file
View file

@ -0,0 +1,29 @@
<?php
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
// Admin-Routes für portal.b2in.local
// Admin-Dashboard
Route::get('/', function () {
return redirect()->route('dashboard');
})->name('home');
Route::view('dashboard', 'admin.dashboard')->middleware(['auth', 'verified'])->name('dashboard');
// Admin-Einstellungen
Route::middleware(['auth'])->group(function () {
Route::redirect('settings', 'settings/profile');
Volt::route('settings/profile', 'settings.profile')->name('settings.profile');
Volt::route('settings/password', 'settings.password')->name('settings.password');
Volt::route('settings/appearance', 'settings.appearance')->name('settings.appearance');
// Weitere Admin-Routen hier...
Volt::route('admin/users', 'admin.users')->name('admin.users');
Volt::route('admin/users/table', 'admin.users.table')->name('admin.users.table');
});
// Admin-Authentication wird bereits in domains.php geladen

58
routes/api.php Normal file
View file

@ -0,0 +1,58 @@
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "api" middleware group. Make something great!
|
*/
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
// Geschützte API-Routen
Route::middleware('auth:sanctum')->group(function () {
// Beispiel-API-Route
Route::get('/profile', function (Request $request) {
return response()->json([
'user' => $request->user(),
'message' => 'Profil erfolgreich abgerufen',
]);
});
// Token-Erstellung (bereits durch Sanctum bereitgestellt)
// POST /api/tokens/create
// POST /api/tokens/revoke
});
// Öffentliche API-Routen
Route::post('/login', function (Request $request) {
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('api-token')->plainTextToken;
return response()->json([
'token' => $token,
'user' => $user,
'message' => 'Erfolgreich angemeldet',
]);
}
return response()->json([
'message' => 'Ungültige Anmeldedaten',
], 401);
});

41
routes/auth.php Normal file
View file

@ -0,0 +1,41 @@
<?php
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
// Fortify-Routen für Authentifizierung mit Livewire
Route::group(['middleware' => config('fortify.middleware', ['web'])], function () {
// Login mit Livewire
Volt::route('/login', 'auth.login')
->middleware(['guest:'.config('fortify.guard')])
->name('login');
// Registrierung mit Livewire
Volt::route('/register', 'auth.register')
->middleware(['guest:'.config('fortify.guard')])
->name('register');
// Passwort vergessen mit Livewire
Volt::route('/forgot-password', 'auth.forgot-password')
->middleware(['guest:'.config('fortify.guard')])
->name('password.request');
// Passwort zurücksetzen mit Livewire
Volt::route('/reset-password/{token}', 'auth.reset-password')
->middleware(['guest:'.config('fortify.guard')])
->name('password.reset');
// E-Mail-Verifizierung mit Livewire
Volt::route('/verify-email', 'auth.verify-email')
->middleware(['auth:'.config('fortify.guard')])
->name('verification.notice');
// Passwort bestätigen mit Livewire
Volt::route('/confirm-password', 'auth.confirm-password')
->middleware(['auth:'.config('fortify.guard')])
->name('password.confirm');
// Logout-Route
Route::post('/logout', [Laravel\Fortify\Http\Controllers\AuthenticatedSessionController::class, 'destroy'])
->name('logout');
});

8
routes/console.php Normal file
View file

@ -0,0 +1,8 @@
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');

87
routes/domains.php Normal file
View file

@ -0,0 +1,87 @@
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Vite;
// Admin-Bereich auf portal.b2in.local
Route::domain('portal.b2in.test')->group(function () {
// Auth-Routen laden
require __DIR__ . '/auth.php';
// Admin-Routes laden
require __DIR__ . '/admin.php';
// Test-Route laden
require __DIR__ . '/test.php';
// Admin-Assets (Vite)
Vite::useBuildDirectory('build/admin');
});
// API-Routen für alle Domains
Route::domain('api.b2in.test')->group(function () {
require __DIR__ . '/api.php';
});
// B2IN Theme für b2in.test (Hauptwebsite)
Route::domain('b2in.test')->group(function () {
// Web-Routes laden
require __DIR__ . '/web.php';
// B2IN Theme Assets (Vite)
Vite::useBuildDirectory('build/b2in');
});
// B2A Theme für b2a.test
Route::domain('b2a.test')->group(function () {
// Web-Routes laden
require __DIR__ . '/web.php';
// B2A Theme Assets (Vite)
Vite::useBuildDirectory('build/b2a');
});
// Stileigentum Theme für stileigentum.test
Route::domain('stileigentum.test')->group(function () {
// Web-Routes laden
require __DIR__ . '/web.php';
// Stileigentum Theme Assets (Vite)
Vite::useBuildDirectory('build/stileigentum');
});
// Style2own Theme für style2own.test
Route::domain('style2own.test')->group(function () {
// Web-Routes laden
require __DIR__ . '/web.php';
// Style2own Theme Assets (Vite)
Vite::useBuildDirectory('build/style2own');
});
/*
// Theme 1 für landing1.test
Route::domain('landing1.test')->group(function () {
// Web-Routes laden
require __DIR__.'/web.php';
// Theme 1 Assets (Vite)
Vite::macro('themeCss', function () {
return $this->asset('resources/css/web/theme-landing1.css');
});
Vite::useBuildDirectory('build/web');
});
// Theme 2 für landing2.test
Route::domain('landing2.test')->group(function () {
// Web-Routes laden
require __DIR__.'/web.php';
// Theme 2 Assets (Vite)
Vite::macro('themeCss', function () {
return $this->asset('resources/css/web/theme-landing2.css');
});
Vite::useBuildDirectory('build/web');
});*/

24
routes/test.php Normal file
View file

@ -0,0 +1,24 @@
<?php
use Illuminate\Support\Facades\Route;
use Livewire\Volt\Volt;
// Test-Route für Login-Komponente
Route::get('/test-login', function () {
return Volt::mount('test-login');
})->name('test.login');
// Vereinfachte Login-Komponente ohne Flux
Route::get('/login-simple', function () {
return Volt::mount('auth.login-simple');
})->name('login.simple');
// Debug-Komponente
Route::get('/debug-login', function () {
return Volt::mount('debug-login');
})->name('debug.login');
// Einfache Test-Route ohne Volt
Route::get('/simple-test', function () {
return view('test-simple');
})->name('simple.test');

68
routes/web.php Normal file
View file

@ -0,0 +1,68 @@
<?php
use Illuminate\Support\Facades\Route;
// Gemeinsame Web-Routes für alle Pages)
// Jede Landing-Page hat das gleiche Gerüst, aber unterschiedliches Styling
// Hauptseite - lädt automatisch das richtige Theme basierend auf der Domain
Route::get('/', function () {
$theme = config('app.theme', 'b2in');
// Use theme-specific view if it exists (e.g., web.b2a, web.stileigentum)
// The view name for b2in theme is 'web.b2in' and not 'web.home'
if ($theme === 'b2in') {
return view('web.home');
}
if (view()->exists('web.' . $theme)) {
return view('web.' . $theme);
}
// Fallback to the default home view
return view('web.home');
})->name('home');
// Willkommensseite
Route::get('/welcome', function () {
return view('web.welcome');
})->name('welcome');
// Weitere gemeinsame Webseiten hier...
Route::get('/about', function () {
return view('web.about');
})->name('about');
Route::get('/ecosystem', function () {
return view('web.ecosystem');
})->name('ecosystem');
Route::get('/partner', function () {
return view('web.partner');
})->name('partner');
Route::get('/magazin', function () {
return view('web.magazin');
})->name('magazin');
Route::get('/magazin/{id}', function ($id) {
return view('web.magazin-detail', compact('id'));
})->name('magazin.detail');
Route::get('/contact', function () {
return view('web.contact');
})->name('contact');
Route::get('/service', function () {
return view('web.service');
})->name('service');
Route::get('/portfolio', function () {
return view('web.portfolio');
})->name('portfolio');
Route::get('/faq', function () {
return view('web.faq');
})->name('faq');
// Theme Demo Route
Route::get('/theme-demo', function () {
return view('web.theme-demo');
})->name('theme-demo');
// Pfad-basierte Theme-Routen für lokale Entwicklung wurden entfernt
// Die Themensauswahl wird nun über den ThemeServiceProvider gesteuert (Domain oder ?theme=... GET-Parameter)