X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ebf78d49a866fb61f908111225ced91946f6d3ef..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 1ba8b97db..5a7a5e971 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -53,7 +53,7 @@ class RegisterController extends Controller */ public function __construct(SocialAuthService $socialAuthService, EmailConfirmationService $emailConfirmationService, UserRepo $userRepo) { - $this->middleware('guest')->except(['socialCallback', 'detachSocialAccount']); + $this->middleware('guest')->only(['getRegister', 'postRegister', 'socialRegister']); $this->socialAuthService = $socialAuthService; $this->emailConfirmationService = $emailConfirmationService; $this->userRepo = $userRepo; @@ -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) {