Yupp Framework PHP

AppControllerFilter

Para agregar seguridad a una aplicación, se debe agregar un archivo con el nombre AppControllerFilters.php en el directorio de la aplicación, por ejemplo yupp/apps/blog. Ese archivo tendrá un contenido similar al siguiente:
class AppControllerFilters implements IAppControllerFilters {
   
   // Filtros que se verifican antes de la ejecución de las acciones de un controller
   public static function getBeforeFilters()
   {
      return array('SecurityFilter'); // Lista de clases con filtros (definidos abajo)
   }
   
   // Filtros que se verifican luego de la ejecución de las acciones de un controller
   public static function getAfterFilters()
   {
      return array();
   }
}


class SecurityFilter extends YuppController implements IControllerBeforeFilter {
   
   /*
    * Ejemplos de controllerActions>
    * 
    * 1. Que controllers y que acciones
    * 
    *    $controllerActions = array("page"=>array("create","list","edit"), "user"=>array("list","show"));
    * 
    * 2. Que controllers, todas las acciones (para controller page)
    * 
    *    $controllerActions = array("page"=>"*", "user"=>array("list","show"));
    * 
    * 3. Todos los controllers y todas las acciones.
    * 
    *    $controllerActions = "*";
    * 
    * 
    * Para exceptControllerActions sirven solo los formatos 1 y 2.
    */
   
   // Lista de controllers a los que se aplica este filter.
   // Pueden ser: un array (controller), un nombre de un 'app.controller' o una action, "app.*" que es "para todos".
   private $controllerActions = "*";
   
   // Lista de controllers a los que no aplica el filtro
   // UsuariosController y acciones login y logout
   private $exceptControllerActions = array(
                                        "usuarios"=>array("login", "logout")
                                      );
   
   public function getAllFilters()
   {
      return $this->controllerActions;
   }

   public function getAllExceptions()
   {
      return $this->exceptControllerActions;
   }
   
   /**
    * Debe retornar true si pasa o un ViewCommand si no pasa, o sea redireccionar o 
	* ejecutar una accion de un cotroller o hacer render de un string.
    */
   public function apply($app, $controller, $action)
   {
      // Ejemplo de verificación de permisos
	  
	  // Si el usuario está logueado, lo obtiene de la sesión
      $u = YuppSession::get("usuario_autorizado");
      
      // Si no está logueado, se redirige a la acción de login
      if ($u == NULL)
      {
         $this->flash['message'] = "No tiene permisos suficientes para realizar la acción";
         return $this->redirect( array("controller" => "usuarios",
                                       "action"     => "login") );
      }
	  
	  // Aquí se puede verificar el tipo de permisos que tiene el usuario, y según el controller y acción,
	  // se lo puede dejar pasar o no.
      
	  // Si está logueado, pasa el filtro (retornando true)
      return true;
   }
}
	  
Por consultas o comentarios ir al grupo:
Grupos de Google
Suscribirte a Yupp Framework PHP
Correo electrónico:
Consultar este grupo