public function invokeAction(Trace $trace, $action, Request $request) { Preconditions::checkIsString($action); if (!$this->loginManager->isLoggedIn()) { throw new AuthenticationRequiredException(); } return parent::invokeAction($trace, $action, $request); }
public function runLogout(Trace $trace, Request $request) { $server = $this->session->read('server'); $result = $this->loginManager->logout(); if ($result && $server->getLoginType() == 'cosignproxy') { // Redirect na hlavnu odhlasovaciu stranku univerzity $redirectUrl = CosignProxyLogin::COSIGN_LOGOUT; $redirectUrl .= '?'; $redirectUrl .= $this->generateUrl('homepage', array(), true); $response = new RedirectResponse($redirectUrl); if (isset($_SERVER['COSIGN_SERVICE'])) { $response->headers->clearCookie($_SERVER['COSIGN_SERVICE'], '/', ''); } return $response; } else { return new RedirectResponse($this->generateUrl('homepage', array(), true)); } }
public function runLogic(Trace $trace, HttpConnection $connection) { $session = $this->context->getSessionStorage(); $loginManager = new LoginManager($session, $this->context->getRequest()); $server = $this->getServer(); $serverConnection = new AIS2ServerConnection($connection, new AIS2ServerUrlMap($server->getServerName())); $action = $this->context->getRequest()->getParameter('action', 'studium.MojeTerminyHodnotenia'); $response = $this->context->getResponse(); if ($action == 'logout') { $loginManager->logout($serverConnection); FajrUtils::redirect(array(), 'index.php'); exit; } else { if ($action == 'termsOfUse') { // TODO(anty): refactor this $response->setTemplate('termsOfUse'); return; } } if ($loginManager->shouldLogin()) { $factory = $this->injector->getInstance('LoginFactory.class'); $loginManager->login($trace->addChild("Logging in..."), $server, $factory, $serverConnection); $loggedIn = false; // login makes redirect on success } else { $loggedIn = $loginManager->isLoggedIn($serverConnection); } if ($loggedIn) { $controllerInjector = new Injector(array(new ControllerInjectorModule($serverConnection, $server, $session))); $mainScreen = $controllerInjector->getInstance('AIS2MainScreen.class'); if (($aisVersion = $session->read('ais/aisVersion')) == null) { $aisVersion = $mainScreen->getAisVersion($trace->addChild('Get AIS version')); $session->write('ais/aisVersion', $aisVersion); } if (($aisApps = $session->read('ais/aisApps')) == null) { $aisApps = $mainScreen->getAllAvailableApplications($trace->addChild('Get all applications')); $session->write('ais/aisApps', $aisApps); } if (($userName = $session->read('ais/aisUserName')) == null) { $userName = $mainScreen->getFullUserName($trace->addChild('Get user name')); $session->write('ais/aisUserName', $userName); } $response->set('aisVersion', $aisVersion); $response->set('aisVersionIncompatible', !($aisVersion >= regression\VersionRange::getMinVersion() && $aisVersion <= regression\VersionRange::getMaxVersion())); $response->set('aisUserName', $userName); $controller = new DispatchController($controllerInjector, $this->injector->getParameter('controller.dispatchMap')); $response->set("action", $action); $controller->invokeAction($trace, $action, $this->context); $response->set('statistics', $this->statistics); } else { $server = $this->getServer(); switch ($server->getLoginType()) { case 'password': $response->setTemplate('welcome'); break; case 'cosign': $response->setTemplate('welcomeCosign'); break; case 'cosignproxy': $response->setTemplate('welcomeCosignProxy'); break; case 'nologin': $response->setTemplate('welcomeDemo'); break; default: throw new Exception("Invalid type of login"); } } }
public function runLogic(Trace $trace, HttpConnection $connection) { $session = $this->injector->getInstance('Session.Storage.class'); $loginManager = new LoginManager($session, $this->context->getRequest()); $server = $this->getServer(); $serverConnection = new AIS2ServerConnection($connection, new AIS2ServerUrlMap($server->getServerName())); $this->context->setAisConnection($serverConnection); $action = $this->context->getRequest()->getParameter('action', 'studium.MojeTerminyHodnotenia'); $response = $this->context->getResponse(); if ($action == 'logout') { $loginManager->logout($serverConnection); // unless there is an error, logout redirects and ends script execution } else { if ($action == 'termsOfUse') { // TODO(anty): refactor this $response->setTemplate('termsOfUse'); return; } } if ($loginManager->shouldLogin()) { $factory = $this->injector->getInstance('LoginFactory.class'); $session->write('server', $server); $loginManager->login($trace->addChild("Logging in..."), $server, $factory, $serverConnection); $loggedIn = false; // login makes redirect on success $session->remove('server'); } else { $loggedIn = $loginManager->isLoggedIn($serverConnection); } if ($loggedIn) { $controller = $this->injector->getInstance('Controller.class'); $response->set("action", $action); $controller->invokeAction($trace, $action, $this->context); $response->set('statistics', $this->statistics); } else { $server = $this->getServer(); switch ($server->getLoginType()) { case 'password': $response->setTemplate('welcome'); break; case 'cosign': $response->setTemplate('welcomeCosign'); break; case 'cosignproxy': $response->setTemplate('welcomeCosignProxy'); break; default: throw new Exception("Invalid type of login"); } } }
public static function getInstance() { $backendFactory = BackendProvider::getInstance(); return new StudiumController($backendFactory->newVSES017Factory(), $backendFactory->getServerTime(), LoginManager::getInstance(), DisplayManager::getInstance(), Router::getInstance(), Warnings::getInstance(), SessionStorageProvider::getInstance()); }
public function runLogic(Trace $trace) { $session = $this->context->getSessionStorage(); $loginManager = new LoginManager($session, $this->context->getRequest(), $this->context->getResponse()); // we are going to log in and we need a clean session. // This needs to be done before a connection // is created, because we pass cookie file name // that contains session_id into AIS2CurlConnection if ($loginManager->shouldLogin()) { $session->regenerate(true); } $connection = $this->provideConnection(); $server = $this->getServer(); $serverConnection = new AIS2ServerConnection($connection, new AIS2ServerUrlMap($server->getServerName())); $action = $this->context->getRequest()->getParameter('action', 'studium.MojeTerminyHodnotenia'); $response = $this->context->getResponse(); if ($action == 'logout') { try { $loginManager->logout($serverConnection); } catch (LoginException $e) { $this->setException($e); } } else { if ($action == 'termsOfUse') { // TODO(anty): refactor this $response->setTemplate('termsOfUse'); return; } else { if ($loginManager->shouldLogin()) { $factory = $this->injector->getInstance('LoginFactory.class'); try { $loginManager->login($trace->addChild("Logging in..."), $server, $factory, $serverConnection); } catch (LoginException $e) { $this->setException($e); try { $loginManager->logout($trace, $serverConnection); } catch (LoginException $e) { // do nothing } } } else { if ($loginManager->isLoggedIn($serverConnection)) { $response->set('loggedIn', true); $controllerInjector = new Injector(array(new ControllerInjectorModule($serverConnection, $server, $session, $this->config)), $this->config->get(FajrConfigOptions::DEBUG_EXCEPTION_SHOWSTACKTRACE)); $mainScreen = $controllerInjector->getInstance('AIS2MainScreen.class'); if (($aisVersion = $session->read('ais/aisVersion')) == null) { $aisVersion = $mainScreen->getAisVersion($trace->addChild('Get AIS version')); $session->write('ais/aisVersion', $aisVersion); } if (($aisApps = $session->read('ais/aisApps')) == null) { $aisModules = array('SP', 'LZ', 'ES', 'ST', 'RH', 'UB', 'AS', 'RP'); $aisApps = $mainScreen->getAllAvailableApplications($trace->addChild('Get all applications'), $aisModules); $session->write('ais/aisApps', $aisApps); } if (($userName = $session->read('ais/aisUserName')) == null) { $userName = $mainScreen->getFullUserName($trace->addChild('Get user name')); $session->write('ais/aisUserName', $userName); } $response->set('aisVersion', $aisVersion); $response->set('aisVersionIncompatible', !($aisVersion >= regression\VersionRange::getMinVersion() && $aisVersion <= regression\VersionRange::getMaxVersion())); $response->set('aisUserName', $userName); $controller = new DispatchController($controllerInjector, $this->injector->getParameter('controller.dispatchMap')); $response->set("action", $action); $controller->invokeAction($trace, $action, $this->context); $response->set('statistics', $this->statistics); } else { $server = $this->getServer(); switch ($server->getLoginType()) { case 'password': $response->setTemplate('welcome'); break; case 'cosign': $response->setTemplate('welcomeCosign'); break; case 'cosignproxy': $response->setTemplate('welcomeCosignProxy'); break; case 'nologin': $response->setTemplate('welcomeDemo'); break; default: throw new Exception("Invalid type of login"); } } } } } }
public function runLogic(Trace $trace) { try { $params = $this->router->routeCurrentRequest(); } catch (ResourceNotFoundException $e) { return $this->displayManager->renderResponse('notfound', array(), 'html', 404); } $action = $params['_action']; $controllerClass = $params['_controller']; $session = SessionStorageProvider::getInstance(); $loginManager = LoginManager::getInstance(); // If we are going to log in, we need a clean session. // This needs to be done before a connection // is created, because we pass cookie file name // that contains session_id into AIS2CurlConnection if ($action == 'Login') { $loginManager->destroySession(); } $connection = ConnectionProvider::getInstance(); $server = $this->serverManager->getActiveServer(); $serverConnection = new AIS2ServerConnection($connection, new AIS2ServerUrlMap($server->getServerName())); $connService = LazyServerConnection::getInstance(); $connService->setReal($serverConnection); $loggedIn = $loginManager->isLoggedIn($serverConnection); if (!$loggedIn) { try { $loggedIn = $loginManager->relogin(); } catch (ReloginFailedException $ex) { $loginManager->destroySession(); return new \Symfony\Component\HttpFoundation\RedirectResponse($this->router->generateUrl('homepage')); } } $this->displayManager->setDefaultParams(array('loggedIn' => $loggedIn)); if ($loggedIn) { $backendFactory = BackendProvider::getInstance(); $mainScreen = $backendFactory->newAIS2MainScreen(); if (($aisVersion = $session->read('ais/aisVersion')) == null) { $aisVersion = $mainScreen->getAisVersion($trace->addChild('Get AIS version')); $session->write('ais/aisVersion', $aisVersion); } $this->displayManager->setDefaultParams(array('aisVersion' => $aisVersion, 'aisVersionIncompatible' => !($aisVersion >= regression\VersionRange::getMinVersion() && $aisVersion <= regression\VersionRange::getMaxVersion()))); if (($aisApps = $session->read('ais/aisApps')) == null) { $aisModules = array('SP', 'LZ', 'ES', 'ST', 'RH', 'UB', 'AS', 'RP'); $aisApps = $mainScreen->getAllAvailableApplications($trace->addChild('Get all applications'), $aisModules); $session->write('ais/aisApps', $aisApps); } if (($userName = $session->read('ais/aisUserName')) == null) { $userName = $mainScreen->getFullUserName($trace->addChild('Get user name')); $session->write('ais/aisUserName', $userName); } $this->displayManager->setDefaultParams(array('aisUserName' => $userName)); } $controller = call_user_func(array($controllerClass, 'getInstance')); if (!$controller instanceof Controller) { throw new Exception('Class "' . $controllerClass . '" is not a controller'); } try { $subTrace = $trace->addChild('Action ' . $controllerClass . '->' . $action); return $controller->invokeAction($subTrace, $action, $this->request); } catch (AuthenticationRequiredException $ex) { return new \Symfony\Component\HttpFoundation\RedirectResponse($this->router->generateUrl('homepage')); } }