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
14 protected $loginService;
17 * StoppedAuthenticationException constructor.
19 public function __construct(User $user, LoginService $loginService)
22 $this->loginService = $loginService;
23 parent::__construct();
29 public function toResponse($request)
33 if ($this->loginService->awaitingEmailConfirmation($this->user)) {
34 return $this->awaitingEmailConfirmationResponse($request);
37 if ($this->loginService->needsMfaVerification($this->user)) {
38 $redirect = '/mfa/verify';
41 return redirect($redirect);
45 * Provide an error response for when the current user's email is not confirmed
46 * in a system which requires it.
48 protected function awaitingEmailConfirmationResponse(Request $request)
50 if ($request->wantsJson()) {
51 return response()->json([
54 'message' => trans('errors.email_confirmation_awaiting'),
59 if (session()->get('sent-email-confirmation') === true) {
60 return redirect('/register/confirm');
63 return redirect('/register/confirm/awaiting');