oneLoginAuth = $oneLoginAuth; $this->systemConfiguration = $systemConfiguration; } /** * @Route(path="/login", name="saml_login") */ public function loginAction(Request $request) { if (!$this->systemConfiguration->isSamlActive()) { throw $this->createNotFoundException('SAML deactivated'); } $session = $request->getSession(); $authErrorKey = Security::AUTHENTICATION_ERROR; if ($request->attributes->has($authErrorKey)) { $error = $request->attributes->get($authErrorKey); } elseif (null !== $session && $session->has($authErrorKey)) { $error = $session->get($authErrorKey); $session->remove($authErrorKey); } else { $error = null; } if ($error) { throw new \RuntimeException($error->getMessage()); } $this->oneLoginAuth->login($session->get('_security.main.target_path')); } /** * @Route(path="/metadata", name="saml_metadata") */ public function metadataAction() { if (!$this->systemConfiguration->isSamlActive()) { throw $this->createNotFoundException('SAML deactivated'); } $metadata = $this->oneLoginAuth->getSettings()->getSPMetadata(); $response = new Response($metadata); $response->headers->set('Content-Type', 'xml'); return $response; } /** * @Route(path="/acs", name="saml_acs") */ public function assertionConsumerServiceAction() { if (!$this->systemConfiguration->isSamlActive()) { throw $this->createNotFoundException('SAML deactivated'); } throw new \RuntimeException('You must configure the check path in your firewall.'); } /** * @Route(path="/logout", name="saml_logout") */ public function logoutAction() { if (!$this->systemConfiguration->isSamlActive()) { throw $this->createNotFoundException('SAML deactivated'); } throw new \RuntimeException('You must configure the logout path in your firewall.'); } }