3 namespace BookStack\Http\Controllers\Auth;
5 use BookStack\Auth\Access\Saml2Service;
6 use BookStack\Http\Controllers\Controller;
7 use Illuminate\Http\Request;
9 class Saml2Controller extends Controller
12 protected $samlService;
15 * Saml2Controller constructor.
17 public function __construct(Saml2Service $samlService)
19 parent::__construct();
20 $this->samlService = $samlService;
24 * Start the login flow via SAML2.
26 public function login()
28 $loginDetails = $this->samlService->login();
29 session()->flash('saml2_request_id', $loginDetails['id']);
31 return redirect($loginDetails['url']);
35 * Get the metadata for this SAML2 service provider.
37 public function metadata()
39 $metaData = $this->samlService->metadata();
40 return response()->make($metaData, 200, [
41 'Content-Type' => 'text/xml'
46 * Single logout service.
47 * Handle logout requests and responses.
55 * Assertion Consumer Service.
56 * Processes the SAML response from the IDP.
60 $requestId = session()->pull('saml2_request_id', null);
62 $user = $this->samlService->processAcsResponse($requestId);
64 $this->showErrorNotification(trans('errors.saml_fail_authed', ['system' => config('saml2.name')]));
65 return redirect('/login');
68 return redirect()->intended();