diff --git a/app/Access/Controllers/ConfirmEmailController.php b/app/Access/Controllers/ConfirmEmailController.php index 94647e06e..d71b8f450 100644 --- a/app/Access/Controllers/ConfirmEmailController.php +++ b/app/Access/Controllers/ConfirmEmailController.php @@ -32,13 +32,17 @@ class ConfirmEmailController extends Controller /** * Shows a notice that a user's email address has not been confirmed, - * Also has the option to re-send the confirmation email. + * along with the option to re-send the confirmation email. */ public function showAwaiting() { $user = $this->loginService->getLastLoginAttemptUser(); + if ($user === null) { + $this->showErrorNotification(trans('errors.login_user_not_found')); + return redirect('/login'); + } - return view('auth.user-unconfirmed', ['user' => $user]); + return view('auth.register-confirm-awaiting'); } /** @@ -90,19 +94,24 @@ class ConfirmEmailController extends Controller /** * Resend the confirmation email. */ - public function resend(Request $request) + public function resend() { - $this->validate($request, [ - 'email' => ['required', 'email', 'exists:users,email'], - ]); - $user = $this->userRepo->getByEmail($request->get('email')); + $user = $this->loginService->getLastLoginAttemptUser(); + if ($user === null) { + $this->showErrorNotification(trans('errors.login_user_not_found')); + return redirect('/login'); + } try { $this->emailConfirmationService->sendConfirmation($user); + } catch (ConfirmationEmailException $e) { + $this->showErrorNotification($e->getMessage()); + + return redirect('/login'); } catch (Exception $e) { $this->showErrorNotification(trans('auth.email_confirm_send_error')); - return redirect('/register/confirm'); + return redirect('/register/awaiting'); } $this->showSuccessNotification(trans('auth.email_confirm_resent')); diff --git a/app/Access/Controllers/HandlesPartialLogins.php b/app/Access/Controllers/HandlesPartialLogins.php index c5554e473..47a63d19b 100644 --- a/app/Access/Controllers/HandlesPartialLogins.php +++ b/app/Access/Controllers/HandlesPartialLogins.php @@ -17,7 +17,7 @@ trait HandlesPartialLogins $user = auth()->user() ?? $loginService->getLastLoginAttemptUser(); if (!$user) { - throw new NotFoundException('A user for this action could not be found'); + throw new NotFoundException(trans('errors.login_user_not_found')); } return $user; diff --git a/app/Access/EmailConfirmationService.php b/app/Access/EmailConfirmationService.php index de9ea69b8..1a5156d3e 100644 --- a/app/Access/EmailConfirmationService.php +++ b/app/Access/EmailConfirmationService.php @@ -17,7 +17,7 @@ class EmailConfirmationService extends UserTokenService * * @throws ConfirmationEmailException */ - public function sendConfirmation(User $user) + public function sendConfirmation(User $user): void { if ($user->email_confirmed) { throw new ConfirmationEmailException(trans('errors.email_already_confirmed'), '/login'); diff --git a/app/Exceptions/StoppedAuthenticationException.php b/app/Exceptions/StoppedAuthenticationException.php index 51e48aa1c..8a917bc52 100644 --- a/app/Exceptions/StoppedAuthenticationException.php +++ b/app/Exceptions/StoppedAuthenticationException.php @@ -9,16 +9,10 @@ use Illuminate\Http\Request; class StoppedAuthenticationException extends \Exception implements Responsable { - protected $user; - protected $loginService; - - /** - * StoppedAuthenticationException constructor. - */ - public function __construct(User $user, LoginService $loginService) - { - $this->user = $user; - $this->loginService = $loginService; + public function __construct( + protected User $user, + protected LoginService $loginService + ) { parent::__construct(); } diff --git a/lang/en/errors.php b/lang/en/errors.php index 8773a78cb..752eb5672 100644 --- a/lang/en/errors.php +++ b/lang/en/errors.php @@ -37,6 +37,7 @@ return [ 'social_driver_not_found' => 'Social driver not found', 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.', 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + 'login_user_not_found' => 'A user for this action could not be found.', // System 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.', diff --git a/resources/views/auth/user-unconfirmed.blade.php b/resources/views/auth/register-confirm-awaiting.blade.php similarity index 66% rename from resources/views/auth/user-unconfirmed.blade.php rename to resources/views/auth/register-confirm-awaiting.blade.php index 2f780b8a3..e5d6f61b2 100644 --- a/resources/views/auth/user-unconfirmed.blade.php +++ b/resources/views/auth/register-confirm-awaiting.blade.php @@ -14,15 +14,7 @@