router = new AltoRouter(); $this->router->setBasePath($_SERVER['BASE_URI']); $this->mapRoutes(); $this->rights = array ( 'Candidate' => array('ControllerCandidate'), 'Admin' => array('ControllerCandidate','ControllerAdmin') ); } /** * @return array */ public function getRights(): array { return $this->rights; } /** * @return AltoRouter */ public function getRouter(): AltoRouter { return $this->router; } public function run(): void { global $error,$rep,$views; $exists=false; $match = $this->router->match(); if ($match) { $target = $match['target']; $params = $match['params']; if (!isset($_SESSION['role'])) { $_SESSION['role'] = 'Candidate'; } $role = Clean::simpleString($_SESSION['role']); foreach ($this->rights[$role] as $controllerName) { if (strcmp($controllerName, $target[0])===0) { $controllerClass = '\Controller\\' . $target[0]; $controller = new $controllerClass(); $controller->{$target[1]}($params); $exists=true; } } if (!$exists) { $error = '403'; require_once($rep . $views['error']); } } else { // no route was matched $error = '404'; require_once($rep . $views['error']); } } /** * @throws Exception */ protected function mapRoutes(): void { global $controller; $this->router->map('GET', '', array($controller['Candidate'], 'goToForm'), 'goToForm'); $this->router->map('POST', '/submitForm', array($controller['Candidate'], 'submitForm'), 'submitForm'); $this->router->map('POST', '/addQuestion', array($controller['Admin'], 'addQuestion'), 'addQuestion'); $this->router->map('POST', '/addResponse', array($controller['Admin'], 'addResponse'), 'addResponse'); $this->router->map('POST', '/continueResponse', array($controller['Admin'], 'continueResponse'), 'continueResponse'); $this->router->map('POST', '/createForm', array($controller['Admin'], 'createForm'), 'createForm'); $this->router->map('POST', '/addKeyword', array($controller['Admin'], 'addKeyword'), 'addKeyword'); $this->router->map('GET', '/goToAdmin', array($controller['Admin'], 'goToAdmin'), 'goToAdmin'); $this->router->map('GET', '/goToAdminLogin', array($controller['Candidate'], 'goToAdminLogin'), 'goToLogin'); $this->router->map('POST', '/login', array($controller['Candidate'], 'login'), 'login'); $this->router->map('GET', '/logout', array($controller['Admin'], 'logout'), 'logout'); $this->router->map('GET', '/goToCategories', array($controller['Admin'], 'goToCategories'), 'goToCategories'); $this->router->map('GET', '/goToQuestions', array($controller['Admin'], 'goToQuestions'), 'goToQuestions'); $this->router->map('GET', '/goToResponses', array($controller['Admin'], 'goToResponses'), 'goToResponses'); $this->router->map('POST', '/deleteQuestion', array($controller['Admin'], 'deleteQuestion'), 'deleteQuestion'); $this->router->map('POST', '/deleteResponse', array($controller['Admin'], 'deleteResponse'), 'deleteResponse'); $this->router->map('POST', '/deleteKeyword', array($controller['Admin'], 'deleteKeyword'), 'deleteKeyword'); $this->router->map('POST', '/deleteResponsesCandidate', array($controller['Admin'], 'deleteResponsesCandidate'), 'deleteResponsesCandidate'); } }