/** * @param MvcEvent $e */ public function checkAcl(MvcEvent $e) { $route = $e->getRouteMatch(); $controller = $route->getParam('controller'); $action = $route->getParam('action'); if (!$this->acl->isAllowed($controller, $action)) { $url = $e->getRouter()->assemble(array('controller' => 'index', 'action' => 'non-autorise'), array('name' => 'accueil')); /** @var Response $response */ $response = $e->getResponse(); $response->getHeaders()->addHeaderLine('Location', $url); $response->setStatusCode(302); $response->sendHeaders(); } }
static function authenticate($resource = '', $permissions = '') { $ci =& get_instance(); $ci->form_validation->set_rules('token', 'token', 'required'); $validated = $ci->form_validation->run(); if ($validated) { $token = $ci->input->post('token'); $token = JWT::decode($token, $ci->config->item('jwt_key')); if ($token == false) { $output['status'] = false; $output['errors'] = '{"type": "unathenticated"}'; if (array_key_exists('errors', $output)) { $errors = explode("\n", $output['errors']); foreach ($errors as $key => $error) { $errors[$key] = json_decode($error); } $output['errors'] = $errors; } $ci->load->view('json', array('output' => $output)); } else { $acl = new ACL(); if (!empty($permissions) && !$acl->isAllowed($token->id, $resource, $permissions)) { $token = false; $output['status'] = false; $output['errors'] = '{"type": "access"}'; if (array_key_exists('errors', $output)) { $errors = explode("\n", $output['errors']); foreach ($errors as $key => $error) { $errors[$key] = json_decode($error); } $output['errors'] = $errors; } $ci->load->view('json', array('output' => $output)); return false; } return $token; } } else { $output['status'] = false; $output['errors'] = validation_errors(); if (array_key_exists('errors', $output)) { $errors = explode("\n", $output['errors']); foreach ($errors as $key => $error) { $errors[$key] = json_decode($error); } $output['errors'] = $errors; } $ci->load->view('json', array('output' => $output)); return false; } }