ppazos / yupp

Automatically exported from code.google.com/p/yupp
0 stars 0 forks source link

Inconsistencia en ejecucion de acciones: se permite xyzAction() y xyz() #189

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Por convención, las acciones de los controladores que se pueden ejecutar desde 
un request deben tener sufijo "Action". Ahora se está permitiendo que acciones 
sin sufijo (métodos comunes) se ejecuten desde una URL.

El problema está en: 
https://code.google.com/p/yupp/source/browse/trunk/YuppPHPFramework/core/routing
/core.routing.Executer.class.php

Está línea ejecuta el método tal cual fue pasado en la URL como action:

{{{
    try
    {
       $model_or_command = $controllerInstance->{$action}();
    }
}}}

Y la verificación de la convención se hace como excepción cuando no coincide 
la acción con un método de YuppController en __call de 
https://code.google.com/p/yupp/source/browse/trunk/YuppPHPFramework/core/mvc/cor
e.mvc.YuppController.class.php

{{{
   if (method_exists($this, $method . 'Action'))
   {
        return $this->{$method . 'Action'}( $args );
   }
}}}

1. La ejecución de la acción con sufijo Action debería ser el caso por 
defecto, no la excepción.
2. Si falla la ejecución porque la acción xyzAction no existe, simplemente 
devolver 404 not found porque se está queriendo acceder a una acción que no 
fue declarada como tal. Esto es además una garantía de seguridad para que no 
se ejecute nada que no se deba, ej. un método del controlador que no es una 
acción.

Original issue reported on code.google.com by pablo.swp@gmail.com on 26 Nov 2013 at 12:56