middleware('guest'); } /** * @throws \Exception */ public function showLinkRequestForm(Request $request): mixed { // If it's a GET request, just show the form if ($request->isMethod('get')) { return view('auth.passwords.email'); } // Handle POST request $sent = ''; $email = $request->input('email') ?? ''; $rssToken = $request->input('apikey') ?? ''; if (empty($email) && empty($rssToken)) { return view('auth.passwords.email')->withErrors(['error' => 'Missing parameter (email and/or apikey) to send password reset']); } if (\App\Support\CaptchaHelper::isEnabled()) { $validate = Validator::make($request->all(), \App\Support\CaptchaHelper::getValidationRules()); if ($validate->fails()) { return view('auth.passwords.email')->withErrors(['error' => 'Captcha validation failed.']); } } // Check users exists and send an email $ret = ! empty($rssToken) ? User::getByRssToken($rssToken) : User::getByEmail($email); if ($ret === null) { return view('auth.passwords.email')->withErrors(['error' => 'The email or apikey are not recognised.']); } // Check if user is soft deleted $user = User::withTrashed()->find($ret['id']); if ($user && $user->trashed()) { return view('auth.passwords.email')->withErrors(['error' => 'This account has been deactivated.']); } // Generate a forgottenpassword guid, store it in the user table $guid = Str::random(32); User::updatePassResetGuid($ret['id'], $guid); // Send the email $resetLink = url('/').'/resetpassword?guid='.$guid; SendPasswordForgottenEmail::dispatch($ret, $resetLink); return view('auth.passwords.email')->with('status', 'Password reset email has been sent!'); } }