3 namespace BookStack\Exceptions;
5 use BookStack\Auth\Access\LoginService;
6 use BookStack\Auth\User;
7 use Illuminate\Contracts\Support\Responsable;
8 use Illuminate\Http\Request;
10 class StoppedAuthenticationException extends \Exception implements Responsable
13 protected $loginService;
16 * StoppedAuthenticationException constructor.
18 public function __construct(User $user, LoginService $loginService)
21 $this->loginService = $loginService;
22 parent::__construct();
28 public function toResponse($request)
32 if ($this->loginService->awaitingEmailConfirmation($this->user)) {
33 return $this->awaitingEmailConfirmationResponse($request);
36 if ($this->loginService->needsMfaVerification($this->user)) {
37 $redirect = '/mfa/verify';
40 return redirect($redirect);
44 * Provide an error response for when the current user's email is not confirmed
45 * in a system which requires it.
47 protected function awaitingEmailConfirmationResponse(Request $request)
49 if ($request->wantsJson()) {
50 return response()->json([
53 'message' => trans('errors.email_confirmation_awaiting'),
58 if (session()->pull('sent-email-confirmation') === true) {
59 return redirect('/register/confirm');
62 return redirect('/register/confirm/awaiting');