Edición de «Ejemplo de ACL con Spirit Beta2»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | + | Bueno señores luego de varias peticiones que hicieron para que publicáramos un ejemplo acerca de la utilización de ACL aquí pondré un pequeño ejemplo que servirá de base para que puedan crear uno mas avanzado. | |
− | |||
− | |||
− | |||
− | + | Lo primero que haremos será modificar el archivo application_controller.php para que quede de la siguiente forma: | |
− | Lo primero | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang="php" line> | <source lang="php" line> | ||
− | class | + | class ApplicationController extends Controller { |
− | + | public $acl; | |
− | public $acl; | + | public $userRol = ""; |
− | public $userRol = ""; | ||
final protected function initialize(){ | final protected function initialize(){ | ||
Línea 38: | Línea 12: | ||
$this->acl = new Acl(); | $this->acl = new Acl(); | ||
− | // | + | // Agregando los roles |
$this->acl->add_role(new AclRole("")); // Visitantes | $this->acl->add_role(new AclRole("")); // Visitantes | ||
− | |||
$this->acl->add_role(new AclRole("U")); // Usuarios | $this->acl->add_role(new AclRole("U")); // Usuarios | ||
− | // | + | // Agregando los recursos |
$this->acl->add_resource(new AclResource("index"), "index"); | $this->acl->add_resource(new AclResource("index"), "index"); | ||
$this->acl->add_resource(new AclResource("test"), "index"); | $this->acl->add_resource(new AclResource("test"), "index"); | ||
− | // | + | // Permitiendo el acceso |
− | + | // Inicio | |
$this->acl->allow("", "index", array("index")); | $this->acl->allow("", "index", array("index")); | ||
$this->acl->allow("U", "index", array("index")); | $this->acl->allow("U", "index", array("index")); | ||
− | + | // Usuarios | |
$this->acl->allow("U", "test", array("index")); | $this->acl->allow("U", "test", array("index")); | ||
} | } | ||
Línea 61: | Línea 34: | ||
</source> | </source> | ||
− | + | En la linea 2 creamos la variable que tendrá el objeto ACL, y en la 3 creamos una variable que tendrá el rol del usuario autenticado en la aplicación. | |
− | + | Luego en el método initialize verificamos si el usuario está autenticado y le asignamos el rol a la variable, luego creamos el objeto ACL y procedemos a agregarlos roles que manejamos en nuestra aplicación, para este ejemplo solo tenemos 2 un string vacío indica que es un visitante que no se ha autenticado y la letra U indica que es un Usuario ya autenticado. Luego agregamos los recursos al objeto ACL indicándole cuales son las acciones disponibles para esos recursos, en este ejemplo los recursos son los mismos controladores y las respectivas acciones de dichos controladores. | |
− | + | Ahora explicaremos que hace cada linea siguiente | |
<source lang="php" line> | <source lang="php" line> | ||
− | $this->acl->allow(" | + | $this->acl->allow("", "index", array("index")); |
</source> | </source> | ||
+ | |||
+ | Esta linea le otorga permisos a los visitantes en la acción index del controlador index | ||
<source lang="php" line> | <source lang="php" line> | ||
− | + | $this->acl->allow("U", "index", array("index")); | |
− | |||
− | $this->acl->allow("U", "index", array("index")); | ||
</source> | </source> | ||
+ | Esta linea le otorga permisos a los usuarios autenticados en la acción index del controlador index | ||
+ | <source lang="php" line> | ||
+ | $this->acl->allow("U", "test", array("index")); | ||
+ | </source> | ||
+ | Esta linea le otorga permisos a los usuarios autenticados en la acción index del controlador test, esta es quizás la linea mas importante para este ejemplo, debido a que solo se le otorgan permisos a los usuarios autenticados para el controlador test, es decir que si intentamos entrar a la acción index del controlador test sin autenticarnos nos va a prohibir la entrada y eso es justamente lo que nos permite hacer los ACL | ||
− | + | Luego crearemos un controlador al cual llamaremos test_controller.php para este ejemplo y será de la siguiente forma: | |
− | |||
− | |||
− | |||
− | |||
<source lang="php" line> | <source lang="php" line> | ||
− | class TestController extends | + | class TestController extends ApplicationController{ |
public function index(){ | public function index(){ | ||
Flash::info("Estamos en la acción {$this->action_name}"); | Flash::info("Estamos en la acción {$this->action_name}"); | ||
} | } | ||
− | + | public function before_filter(){ | |
// Verificando si el rol del usuario actual tiene permisos para la acción a ejecutar | // Verificando si el rol del usuario actual tiene permisos para la acción a ejecutar | ||
if(!$this->acl->is_allowed($this->userRol, $this->controller_name, $this->action_name)){ | if(!$this->acl->is_allowed($this->userRol, $this->controller_name, $this->action_name)){ | ||
Flash::error("Acceso negado"); | Flash::error("Acceso negado"); | ||
+ | //View::select(NULL, "small"); | ||
return false; | return false; | ||
} | } | ||
Línea 101: | Línea 76: | ||
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |