b2in/routes/auth.php
2026-01-23 17:33:10 +01:00

80 lines
3.1 KiB
PHP

<?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');
// E-Mail-Verifizierung durchführen (ohne Login - verifiziert und loggt User ein)
Route::get('/email/verify/{id}/{hash}', function (Illuminate\Http\Request $request, $id, $hash) {
// Ablaufzeit prüfen
$expires = $request->query('expires');
if ($expires && time() > $expires) {
return redirect()->route('login')
->withErrors(['email' => __('Der Verifizierungslink ist abgelaufen. Bitte fordern Sie einen neuen an.')]);
}
// User finden
$user = \App\Models\User::findOrFail($id);
// Hash überprüfen (E-Mail-Hash)
if (!hash_equals($hash, sha1($user->getEmailForVerification()))) {
abort(403, __('Ungültiger Verifizierungslink.'));
}
// E-Mail verifizieren (falls noch nicht verifiziert)
if (!$user->hasVerifiedEmail()) {
$user->markEmailAsVerified();
// Event auslösen (für Listeners)
event(new \Illuminate\Auth\Events\Verified($user));
}
// User einloggen
\Illuminate\Support\Facades\Auth::login($user);
return redirect()->route('partner.setup.wizard')
->with('message', __('E-Mail erfolgreich verifiziert! Willkommen! Bitte schließen Sie Ihr Setup ab.'));
})->name('verification.verify');
// E-Mail-Verifizierung erneut senden
Route::post('/email/verification-notification', function (Illuminate\Http\Request $request) {
$request->user()->sendEmailVerificationNotification();
return back()->with('message', __('Verifizierungslink wurde erneut gesendet!'));
})->middleware(['auth:' . config('fortify.guard'), 'throttle:6,1'])->name('verification.send');
// 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('auth.logout');
});