80 lines
3.1 KiB
PHP
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');
|
|
});
|