diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 5b3719bc0..6bba6de04 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -8,6 +8,7 @@ use BookStack\Repos\UserRepo; use BookStack\Services\EmailConfirmationService; use BookStack\Services\SocialAuthService; use BookStack\User; +use Exception; use Illuminate\Http\Request; use Illuminate\Http\Response; use Validator; @@ -56,7 +57,6 @@ class RegisterController extends Controller $this->userRepo = $userRepo; $this->redirectTo = baseUrl('/'); $this->redirectPath = baseUrl('/'); - $this->username = config('auth.method') === 'standard' ? 'email' : 'username'; parent::__construct(); } @@ -158,7 +158,13 @@ class RegisterController extends Controller if (setting('registration-confirmation') || setting('registration-restrict')) { $newUser->save(); - $this->emailConfirmationService->sendConfirmation($newUser); + + try { + $this->emailConfirmationService->sendConfirmation($newUser); + } catch (Exception $e) { + session()->flash('error', trans('auth.email_confirm_send_error')); + } + return redirect('/register/confirm'); } @@ -189,7 +195,7 @@ class RegisterController extends Controller $user->email_confirmed = true; $user->save(); auth()->login($user); - session()->flash('success', 'Your email has been confirmed!'); + session()->flash('success', trans('auth.email_confirm_success')); $this->emailConfirmationService->deleteConfirmationsByUser($user); return redirect($this->redirectPath); } @@ -215,8 +221,16 @@ class RegisterController extends Controller 'email' => 'required|email|exists:users,email' ]); $user = $this->userRepo->getByEmail($request->get('email')); + + try { + $this->emailConfirmationService->sendConfirmation($user); + } catch (Exception $e) { + session()->flash('error', trans('auth.email_confirm_send_error')); + return redirect('/register/confirm'); + } + $this->emailConfirmationService->sendConfirmation($user); - session()->flash('success', 'Confirmation email resent, Please check your inbox.'); + session()->flash('success', trans('auth.email_confirm_resent')); return redirect('/register/confirm'); } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 053d9ebd5..4c56516dc 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -3,6 +3,7 @@ namespace BookStack\Http\Controllers; use BookStack\Activity; +use Exception; use Illuminate\Http\Request; use Illuminate\Http\Response; @@ -100,9 +101,14 @@ class UserController extends Controller // Get avatar from gravatar and save if (!config('services.disable_services')) { - $avatar = \Images::saveUserGravatar($user); - $user->avatar()->associate($avatar); - $user->save(); + try { + $avatar = \Images::saveUserGravatar($user); + $user->avatar()->associate($avatar); + $user->save(); + } catch (Exception $e) { + \Log::error('Failed to save user gravatar image'); + } + } return redirect('/settings/users'); diff --git a/app/Notifications/ConfirmEmail.php b/app/Notifications/ConfirmEmail.php index bd310d73d..64d9bb9ac 100644 --- a/app/Notifications/ConfirmEmail.php +++ b/app/Notifications/ConfirmEmail.php @@ -38,11 +38,12 @@ class ConfirmEmail extends Notification */ public function toMail($notifiable) { + $appName = ['appName' => setting('app-name')]; return (new MailMessage) - ->subject('Confirm your email on ' . session('app-name')) - ->greeting('Thanks for joining ' . setting('app-name') . '!') - ->line('Please confirm your email address by clicking the button below:') - ->action('Confirm Email', baseUrl('/register/confirm/' . $this->token)); + ->subject(trans('auth.email_confirm_subject', $appName)) + ->greeting(trans('auth.email_confirm_greeting', $appName)) + ->line(trans('auth.email_confirm_text')) + ->action(trans('auth.email_confirm_action'), baseUrl('/register/confirm/' . $this->token)); } } diff --git a/app/Repos/UserRepo.php b/app/Repos/UserRepo.php index 0926f6304..127db9fb5 100644 --- a/app/Repos/UserRepo.php +++ b/app/Repos/UserRepo.php @@ -2,6 +2,7 @@ use BookStack\Role; use BookStack\User; +use Exception; use Setting; class UserRepo @@ -84,9 +85,14 @@ class UserRepo // Get avatar from gravatar and save if (!config('services.disable_services')) { - $avatar = \Images::saveUserGravatar($user); - $user->avatar()->associate($avatar); - $user->save(); + try { + $avatar = \Images::saveUserGravatar($user); + $user->avatar()->associate($avatar); + $user->save(); + } catch (Exception $e) { + $user->save(); + \Log::error('Failed to save user gravatar image'); + } } return $user; diff --git a/app/Services/ImageService.php b/app/Services/ImageService.php index 4401cb230..aa1375487 100644 --- a/app/Services/ImageService.php +++ b/app/Services/ImageService.php @@ -213,7 +213,7 @@ class ImageService public function saveUserGravatar(User $user, $size = 500) { $emailHash = md5(strtolower(trim($user->email))); - $url = 'http://www.gravatar.com/avatar/' . $emailHash . '?s=' . $size . '&d=identicon'; + $url = 'https://www.gravatar.com/avatar/' . $emailHash . '?s=' . $size . '&d=identicon'; $imageName = str_replace(' ', '-', $user->name . '-gravatar.png'); $image = $this->saveNewFromUrl($url, 'user', $imageName); $image->created_by = $user->id; diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index cbf4ec7f5..ffdb1cf45 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -12,4 +12,15 @@ return [ */ 'failed' => 'These credentials do not match our records.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + + /** + * Email Confirmation Text + */ + 'email_confirm_subject' => 'Confirm your email on :appName', + 'email_confirm_greeting' => 'Thanks for joining :appName!', + 'email_confirm_text' => 'Please confirm your email address by clicking the button below:', + 'email_confirm_action' => 'Confirm Email', + 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.', + 'email_confirm_success' => 'Your email has been confirmed!', + 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.', ]; \ No newline at end of file