'Passwort vergessen', 'eyebrow' => 'Passwort zurücksetzen', 'topRightLabel' => 'Doch erinnert?', 'topRightLinkText' => 'Zur Anmeldung', 'topRightLinkHref' => '/login'])] class extends Component { public string $email = ''; /** * Send a password reset link to the provided email address. */ public function sendPasswordResetLink(): void { $this->validate([ 'email' => ['required', 'string', 'email'], ]); // Drosseln wie beim Anmeldelink: pro E-Mail (Mail-Fluten eines // Postfachs) und pro IP (Durchprobieren vieler Adressen). Der // Password-Broker drosselt zusätzlich nur pro Nutzer (60s). $this->ensureIsNotRateLimited(); RateLimiter::hit($this->throttleKey(), 3600); RateLimiter::hit($this->ipThrottleKey(), 3600); Password::sendResetLink($this->only('email')); session()->flash('status', __('A reset link will be sent if the account exists.')); } protected function ensureIsNotRateLimited(): void { $withinEmail = ! RateLimiter::tooManyAttempts($this->throttleKey(), 3); $withinIp = ! RateLimiter::tooManyAttempts($this->ipThrottleKey(), 15); if ($withinEmail && $withinIp) { return; } throw ValidationException::withMessages([ 'email' => __('Zu viele Anfragen. Bitte versuchen Sie es später erneut.'), ]); } protected function throttleKey(): string { return 'password-reset|'.Str::transliterate(Str::lower($this->email)); } protected function ipThrottleKey(): string { return 'password-reset-ip|'.request()->ip(); } }; ?>

{{ __('Geben Sie die E-Mail-Adresse Ihres Kontos ein. Sie erhalten innerhalb weniger Minuten einen Link, mit dem Sie ein neues Passwort vergeben können.') }}

@error('email')

{{ $message }}

@enderror