3 namespace BookStack\Http\Controllers\Auth;
5 use BookStack\Auth\Access\OpenIdService;
6 use BookStack\Http\Controllers\Controller;
8 class OpenIdController extends Controller
11 protected $openidService;
14 * OpenIdController constructor.
16 public function __construct(OpenIdService $openidService)
18 parent::__construct();
19 $this->openidService = $openidService;
20 $this->middleware('guard:openid');
24 * Start the authorization login flow via OpenId Connect.
26 public function login()
28 $loginDetails = $this->openidService->login();
29 session()->flash('openid_state', $loginDetails['state']);
31 return redirect($loginDetails['url']);
35 * Start the logout flow via OpenId Connect.
37 public function logout()
39 $logoutDetails = $this->openidService->logout();
41 if ($logoutDetails['id']) {
42 session()->flash('saml2_logout_request_id', $logoutDetails['id']);
45 return redirect($logoutDetails['url']);
49 * Authorization flow Redirect.
50 * Processes authorization response from the OpenId Connect Authorization Server.
52 public function redirect()
54 $storedState = session()->pull('openid_state');
55 $responseState = request()->query('state');
57 if ($storedState !== $responseState) {
58 $this->showErrorNotification(trans('errors.openid_fail_authed', ['system' => config('saml2.name')]));
59 return redirect('/login');
62 $user = $this->openidService->processAuthorizeResponse(request()->query('code'));
64 $this->showErrorNotification(trans('errors.openid_fail_authed', ['system' => config('saml2.name')]));
65 return redirect('/login');
68 return redirect()->intended();