/** * Assign current user as a resource object. * * @param Request $request Current Router Request. * * @return void */ protected function assignCurrentUserAsResource(Request $request) { if (in_array($request->action(), array('edit', 'delete', 'show', 'export'), true)) { $request->redirectTo('index'); } $this->resource = $this->user; $this->removeAccessibleAttributes(array('role_id')); }
/** * Dispatches the processed request. * * @param Request $request Router Request object. * @param Routes $routes Router Routes object. * * @access public * @throws \InvalidArgumentException Request token does not match. * * @return void */ public function dispatch(Request &$request, Routes &$routes) { $this->routes = $routes; $this->request = $request; $this->response = new Response(); if (Core\Session()->get('_token')) { $this->request->setToken(Core\Session()->get('_token')); } else { $this->request->regenerateToken(); Core\Session()->set('_token', $this->request->token()); } if (!$request->isValid()) { $this->response->setHttpResponseCode(403); throw new \InvalidArgumentException('Request token does not match.'); } $namespace = $request->mode('namespace'); $controller = "\\{$namespace}\\Controllers\\" . $request->controller(); if (class_exists($controller)) { $controller = new $controller(); $action = $request->action(); /* Check if there is such action implemented and filter for magic methods like __construct, etc. */ if (is_callable(array($controller, $action)) && false === strpos($action, '__')) { $controller->__executeAction($action, $request); } else { $controller->__executeAction('actionNotFound', $request); } $this->response->setContent($controller->renderer->getOutput()); $this->response->addHeader('Content-Type: ' . $controller->renderer->getOutputContentType()); } else { Core\Base\Controller::resourceNotFound($request); } }