Diferencia entre revisiones de «Ejemplo de ACL con Spirit Beta2»

De KumbiaPHP Framework Wiki
(Página creada con '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 ...')
 
Línea 3: Línea 3:
 
Lo primero que haremos será modificar el archivo application_controller.php para que quede de la siguiente forma:
 
Lo primero que haremos será modificar el archivo application_controller.php para que quede de la siguiente forma:
  
[code]
+
<source lang="php" line>
 
class ApplicationController extends Controller {
 
class ApplicationController extends Controller {
 
public $acl;
 
public $acl;
Línea 32: Línea 32:
 
}
 
}
 
}
 
}
[/code]
+
</source>
  
 
Luego crearemos un controlador al cual llamaremos test_controller.php para este ejemplo y será de la  siguiente forma:
 
Luego crearemos un controlador al cual llamaremos test_controller.php para este ejemplo y será de la  siguiente forma:
  
[code]
+
<source lang="php" line>
 
class TestController extends ApplicationController{
 
class TestController extends ApplicationController{
 
public function index(){
 
public function index(){
Línea 51: Línea 51:
 
}
 
}
 
}
 
}
[/code]
+
</source>

Revisión del 06:51 2 jun 2010

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:

class ApplicationController extends Controller {
	public $acl;
	public $userRol = "";
	
	final protected function initialize(){
		if(Auth::is_valid()) $this->userRol = Auth::get("rol");
		
		$this->acl = new Acl();
		// Agregando los roles
		$this->acl->add_role(new AclRole("")); // Visitantes
		$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("test"), "index");
		
		// Permitiendo el acceso
		// Inicio
		$this->acl->allow("", "index", array("index"));
		$this->acl->allow("U", "index", array("index"));
		// Usuarios
		$this->acl->allow("U", "test", array("index"));
	}

	final protected function finalize()
	{
	}
}

Luego crearemos un controlador al cual llamaremos test_controller.php para este ejemplo y será de la siguiente forma:

class TestController extends ApplicationController{
	public function index(){
		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
		if(!$this->acl->is_allowed($this->userRol, $this->controller_name, $this->action_name)){
			Flash::error("Acceso negado");
			//View::select(NULL, "small");
			return false;
		}
	}
}