public function execute() { //SESSION $session = SessionFactory::create(); $selectedRoleId = $session->get('selected-role-id'); //ACTIONS $actions = ActionFactory::create(); $datahandler = DatahandlerFactory::create('D_UpdateActions'); $data = $datahandler->setIndata($actions); //REDIRECTOR $redirector = RedirectorFactory::create(); $redirector->redirectTo('index.php?selected-role-id=' . $selectedRoleId . '&A_ReadActionsWithStatus'); }
/** * Despacha a la acción correspondiente al request. Luego de la ejecución devuelve la referencia a la * acción. * * @access public * @return (object) referencia a la acción creada */ function dispatch() { // Tomar la accion que viene por GET $action = $_GET['accion']; // Buscar el path de la clase para la accion correspondiente o un path por defecto $actionFactory = new ActionFactory($action); $actionParams = $actionFactory->create(); $class_name = $actionParams['clase']; $modulo = $actionParams['modulo']; $action_name = $actionParams['nombre']; // Incluir el archivo con la clase include_once 'acciones/' . $modulo . '/accion.' . $class_name . '.php'; // Crear la clase de la accion correspondiente eval('$action = new $class_name;'); $action->ejecutarCiclo(); return $action; }
public function execute() { //SESSION $session = SessionFactory::create(); if ($session->get("authenticated") == null) { $session->set("authenticated", false); } if ($session->get("authorized") == null) { $session->set("authorized", false); } //ACTIONS $actions = ActionFactory::create(); //REQUESTHANDLER AND SELECTACTIONKEY $requestHandler = RequestHandlerFactory::create(); $selectedActionKey = $requestHandler->getSelectedActionKey(); //VALIDATOR $validator = ValidatorFactory::create(); //REDIRECTOR $redirector = RedirectorFactory::create(); ////LOGICA DE AUTENTICACIÓN Y AUTORIZACIÓN: //Si no está autenticado se ejecuta la acción de autenticación //, esto podría ser también si selecciona Authenticate $validator->ifFalse($session->get("authenticated"))->execute($actions['A_Authenticate']); //Si selecciona Logout Action se le permite ejecutar siempre. $validator->ifTrue($selectedActionKey == 'A_Logout')->execute($actions['A_Logout']); //Si después de ser autenticado entra aquí no está autenticado //se ejecuta Logout: $validator->ifFalse($session->get("authenticated"))->execute($actions['A_Logout']); //Si está autenticado y no autorizado se ejecuta la acción de autorización //(siempre se debe autorizar, para que esto sea más eficiente armar un cache en //session con las acciones autorizadas) $actions['A_Authorize']->execute(); //Si está autenticado y no autorizado: // $validator->ifFalse( $authorizer->isAuthorized() ) $validator->ifFalse($session->get("authorized"))->respond(NO_AUTHORIZED_ACTION); /*Si está autenticado y autorizado y quiere ejecutar login lo redirijo a default a default action:*/ $validator->ifTrue($selectedActionKey == "A_Authenticate")->redirectTo('index.php?A_EnterFilterDataForm'); //Si está autenticado y autorizado y ejecuta una acción no existente $validator->ifFalse(array_key_exists($selectedActionKey, $actions))->respond($selectedActionKey . " " . NOT_IMPLEMENTED); //Si está autenticado y autorizado y ejecuta una acción existente $actions[$selectedActionKey]->execute(); }
session_start(); // Se setea el maximo tiempo de espera para que no emita error de time out ini_set("max_execution_time", MAX_EXECUTION_TIME); // Se activa el logueo de errores en un archivo. // Descomentar en produccion //$error = new ErrorHandler('log/errors.log'); // Inicializar registro if (!RegistryHelper::isInit()) { RegistryHelper::init(); } RegistryHelper::registerLanguage("es"); // Tomar la accion que viene por GET $action = !empty($_GET['accion']) ? $_GET['accion'] : 'inicio'; // Buscar el path de la clase para la accion correspondiente o un path por defecto $actionFactory = new ActionFactory($action); $actionParams = $actionFactory->create(); $class_name = $actionParams['clase']; $modulo = $actionParams['modulo']; $action_name = $actionParams['nombre']; // Templates if (empty($_GET['pop'])) { include_once "comun/inc.template_arriba.php"; } else { if ($_GET['pop'] == 1) { include_once "comun/inc.template_pop_arriba.php"; } } // Si el usuario no esta logueado y no se esta solicitando la ejecucion de ningun proceso // se guarda la URL para aplicar el patron ReturnTo luego del logueo. if (!RegistryHelper::isUserLogged() && $action_name != 'Login') { //Codigo de ReturnTo
/** * Return indexer action instance * * @return ActionInterface */ protected function getActionInstance() { return $this->actionFactory->create($this->getActionClass(), ['data' => $this->getData()]); }