first commit
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled

This commit is contained in:
Kevin Adametz 2025-10-20 17:53:02 +02:00
commit 405df0a122
3083 changed files with 69203 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
// 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');

48
routes/domains.php Normal file
View file

@ -0,0 +1,48 @@
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Vite;
// Portal-Bereich auf https://pr-copilot.test
Route::domain('pr-copilot.test')->group(function () {
// Auth-Routen laden
require __DIR__ . '/auth.php';
// Admin-Routes laden
require __DIR__ . '/admin.php';
// Portal-Assets (Vite) - Port 5177
Vite::useBuildDirectory('build/portal');
});
// API-Routen für alle Domains
Route::domain('api.pr-copilot.test')->group(function () {
require __DIR__ . '/api.php';
});
// Theme 1 für presseecho.test
Route::domain('presseecho.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-presseecho.css');
});
Vite::useBuildDirectory('build/web');
});
// Theme 2 für businessportal24.test
Route::domain('businessportal24.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-businessportal24.css');
});
Vite::useBuildDirectory('build/web');
});

114
routes/web.php Normal file
View file

@ -0,0 +1,114 @@
<?php
use Illuminate\Support\Facades\Route;
// Gemeinsame Web-Routes für alle Landingpages
// Jede Landing-Page hat das gleiche Gerüst, aber unterschiedliches Styling
// Hauptseite - dynamisch basierend auf Domain
Route::get('/', function () {
$domain = request()->getHost();
// Domain-basierte View-Auswahl
if (str_contains($domain, 'presseecho')) {
return view('web.presseecho');
} elseif (str_contains($domain, 'businessportal24')) {
return view('web.businessportal24');
}
// Fallback für andere Domains oder lokale Entwicklung
return view('web.businessportal24');
})->name('home');
// Preise & Leistungen
Route::get('/preise', function () {
return view('web.preise');
})->name('preise');
// FAQ - Häufig gestellte Fragen
Route::get('/faq', function () {
return view('web.faq');
})->name('faq');
// Kontakt
Route::get('/kontakt', function () {
return view('web.kontakt');
})->name('kontakt');
// Über uns
Route::get('/ueber-uns', function () {
return view('web.ueber-uns');
})->name('ueber-uns');
// Veröffentlichen
Route::get('/veroeffentlichen', function () {
return view('web.veroeffentlichen');
})->name('veroeffentlichen');
// Kategorien
Route::get('/kategorien', function () {
return view('web.kategorien');
})->name('kategorien');
// Suche
Route::get('/suche', function () {
return view('web.suche');
})->name('suche');
// Services
Route::get('/newsrooms', function () {
return view('web.newsrooms');
})->name('newsrooms');
Route::get('/api', function () {
return view('web.api');
})->name('api');
// Über uns - Unterseiten
Route::get('/team', function () {
return view('web.team');
})->name('team');
Route::get('/partner', function () {
return view('web.partner');
})->name('partner');
Route::get('/karriere', function () {
return view('web.karriere');
})->name('karriere');
Route::get('/presse', function () {
return view('web.presse');
})->name('presse');
// Hilfe & Support
Route::get('/hilfe', function () {
return view('web.hilfe');
})->name('hilfe');
// Rechtliches
Route::get('/impressum', function () {
return view('web.impressum');
})->name('impressum');
Route::get('/datenschutz', function () {
return view('web.datenschutz');
})->name('datenschutz');
Route::get('/agb', function () {
return view('web.agb');
})->name('agb');
Route::get('/cookies', function () {
return view('web.cookies');
})->name('cookies');
// Kategorie Seite (z.B. IT & Software)
Route::get('/kategorie/{slug}', function ($slug) {
return view('web.kategorie', ['categorySlug' => $slug]);
})->name('kategorie');
// Release Detail Seite
Route::get('/release/{slug}', function ($slug) {
return view('web.release-detail', ['releaseSlug' => $slug]);
})->name('release.detail');