- Fix: Notifiable-Trait zum User-Model hinzugefuegt (behebt notify()-500er) - Installer: SMTP-Verbindungstest mit EsmtpTransport + Ueberspringen-Link - Admin: Neuer E-Mail-Tab mit SMTP-Konfiguration + Verbindungstest - Admin: Lazy Quill-Initialisierung (nur sichtbare Locale wird geladen) - Uebersetzungen: 17 neue Mail-Keys in allen 6 Sprachen Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
63 lines
2.2 KiB
PHP
63 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\ActivityLog;
|
|
use App\Models\User;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Password;
|
|
use Illuminate\View\View;
|
|
|
|
class ForgotPasswordController extends Controller
|
|
{
|
|
public function showForm(): View
|
|
{
|
|
return view('auth.forgot-password');
|
|
}
|
|
|
|
public function sendResetLink(Request $request): RedirectResponse
|
|
{
|
|
$request->validate([
|
|
'email' => ['required', 'email'],
|
|
]);
|
|
|
|
// Deaktivierte Benutzer: keinen Reset-Link senden, aber generische Meldung zurückgeben (V01)
|
|
$user = User::where('email', $request->email)->first();
|
|
if ($user && !$user->is_active) {
|
|
return back()->with('status', __('passwords.sent'));
|
|
}
|
|
|
|
try {
|
|
$status = Password::sendResetLink(
|
|
$request->only('email')
|
|
);
|
|
|
|
if ($status === Password::RESET_LINK_SENT) {
|
|
ActivityLog::log('password_reset_requested', __('admin.log_password_reset_requested'));
|
|
}
|
|
} catch (\Exception $e) {
|
|
Log::error('Password reset mail failed', ['error' => $e->getMessage()]);
|
|
|
|
// Pruefen ob Mail ueberhaupt konfiguriert ist
|
|
$mailer = config('mail.default');
|
|
if ($mailer === 'smtp') {
|
|
$hint = 'SMTP-Zugangsdaten in der .env-Datei pruefen (MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD).';
|
|
} elseif ($mailer === 'log') {
|
|
$hint = 'MAIL_MAILER=log — E-Mails werden nur ins Log geschrieben, nicht versendet. Fuer echten Versand SMTP konfigurieren.';
|
|
} else {
|
|
$hint = 'Mail-Konfiguration pruefen (MAIL_MAILER=' . $mailer . ').';
|
|
}
|
|
|
|
return back()->withErrors([
|
|
'email' => 'E-Mail konnte nicht gesendet werden: ' . $e->getMessage() . ' — ' . $hint,
|
|
]);
|
|
}
|
|
|
|
// Immer dieselbe Erfolgsmeldung zurueckgeben (Email-Enumeration verhindern)
|
|
return back()->with('status', __('passwords.sent'));
|
|
}
|
|
}
|