X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/0b967d84ad1ed630fc72974afa3351461881e9ba..refs/pull/654/head:/app/Http/Controllers/Auth/RegisterController.php diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 0fa005e1f..5a7a5e971 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -250,15 +250,27 @@ class RegisterController extends Controller /** * The callback for social login services. * @param $socialDriver + * @param Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws SocialSignInException + * @throws UserRegistrationException + * @throws \BookStack\Exceptions\SocialDriverNotConfigured + * @throws ConfirmationEmailException */ - public function socialCallback($socialDriver) + public function socialCallback($socialDriver, Request $request) { if (!session()->has('social-callback')) { throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login'); } + // Check request for error information + if ($request->has('error') && $request->has('error_description')) { + throw new SocialSignInException(trans('errors.social_login_bad_response', [ + 'socialAccount' => $socialDriver, + 'error' => $request->get('error_description'), + ]), '/login'); + } + $action = session()->pull('social-callback'); if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver); if ($action == 'register') return $this->socialRegisterCallback($socialDriver); @@ -279,7 +291,9 @@ class RegisterController extends Controller * Register a new user after a registration callback. * @param $socialDriver * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * @throws ConfirmationEmailException * @throws UserRegistrationException + * @throws \BookStack\Exceptions\SocialDriverNotConfigured */ protected function socialRegisterCallback($socialDriver) {