namespace BookStack\Http\Controllers\Auth;
use BookStack\Exceptions\ConfirmationEmailException;
+use BookStack\Exceptions\SocialSignInException;
use BookStack\Exceptions\UserRegistrationException;
use BookStack\Repos\UserRepo;
use BookStack\Services\EmailConfirmationService;
use BookStack\Services\SocialAuthService;
+use BookStack\SocialAccount;
use BookStack\User;
use Exception;
use Illuminate\Http\Request;
*/
public function __construct(SocialAuthService $socialAuthService, EmailConfirmationService $emailConfirmationService, UserRepo $userRepo)
{
- $this->middleware('guest');
+ $this->middleware('guest')->only(['getRegister', 'postRegister', 'socialRegister']);
$this->socialAuthService = $socialAuthService;
$this->emailConfirmationService = $emailConfirmationService;
$this->userRepo = $userRepo;
protected function checkRegistrationAllowed()
{
if (!setting('registration-enabled')) {
- throw new UserRegistrationException('Registrations are currently disabled.', '/login');
+ throw new UserRegistrationException(trans('auth.registrations_disabled'), '/login');
}
}
* @param Request|\Illuminate\Http\Request $request
* @return Response
* @throws UserRegistrationException
- * @throws \Illuminate\Foundation\Validation\ValidationException
+ * @throws \Illuminate\Validation\ValidationException
*/
public function postRegister(Request $request)
{
$restrictedEmailDomains = explode(',', str_replace(' ', '', setting('registration-restrict')));
$userEmailDomain = $domain = substr(strrchr($userData['email'], "@"), 1);
if (!in_array($userEmailDomain, $restrictedEmailDomains)) {
- throw new UserRegistrationException('That email domain does not have access to this application', '/register');
+ throw new UserRegistrationException(trans('auth.registration_email_domain_invalid'), '/register');
}
}
}
auth()->login($newUser);
- session()->flash('success', 'Thanks for signing up! You are now registered and signed in.');
+ session()->flash('success', trans('auth.register_success'));
return redirect($this->redirectPath());
}
return redirect('/register/confirm');
}
- $this->emailConfirmationService->sendConfirmation($user);
session()->flash('success', trans('auth.email_confirm_resent'));
return redirect('/register/confirm');
}
*/
public function socialCallback($socialDriver)
{
- if (session()->has('social-callback')) {
- $action = session()->pull('social-callback');
- if ($action == 'login') {
- return $this->socialAuthService->handleLoginCallback($socialDriver);
- } elseif ($action == 'register') {
- return $this->socialRegisterCallback($socialDriver);
- }
- } else {
- throw new SocialSignInException('No action defined', '/login');
+ if (!session()->has('social-callback')) {
+ throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login');
}
+
+ $action = session()->pull('social-callback');
+ if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver);
+ if ($action == 'register') return $this->socialRegisterCallback($socialDriver);
return redirect()->back();
}
return $this->registerUser($userData, $socialAccount);
}
-
}
\ No newline at end of file