Buen día ya pude implementar el Acl en mi sitio, y tambien me valida el Auth, el problema que tengo es que no se como asignar el rol para que éste sea cachado y me valide cuando la sesion se halla activado correctamente, me aparece un error Notice: Undefined index: rol inC:\xampp\htdocs\terrenos\core\libs\auth\auth.phpon line 299 ,
mi codigo es el siguiente en el app controller
public $acl; //variable objeto ACL
public $userRol = ""; //variable con el rol del usuario autenticado en la aplicación
final protected function initialize(){
if(Auth::is_valid()) $this->userRol = Auth::get("rol");
$this->acl = new Acl();
$Niveles = Load::model('nivel')->registros();
$this->acl->add_role(new AclRole(""));
foreach($Niveles as $nivel){
$this->acl->add_role(new AclRole(strtolower($nivel->descripcion)));
}
$this->acl->add_resource(new AclResource('index'), 'index','login','inicio');
$this->acl->add_resource(new AclResource('seccion'), 'index','lista');
$this->acl->add_resource(new AclResource('nivel'), 'index','modifica','alta','lista','busca','encuentra');
$Permisos = Load::model('permiso')->registros();
foreach($Permisos as $permiso){
$this->acl->allow(strtolower($permiso->nivel),strtolower($permiso->seccion),strtolower($permiso->accion));
}
$this->acl->allow("","index","index");
$this->acl->allow("","index","login");
}
este es mi login
public function login(){
View::select(NULL);
if (Input::hasPost("usuario","password")){
$password = Input::post("password");
$usuario=Input::post("usuario");
$auth = new Auth("model", "class: usuario", "usuario: $usuario", "password: $password");
if ($auth->authenticate()) {
Router::redirect("index/inicio");
} else {
Flash::error("Falló");
}
}
}
y este es mi validacion con before filter
protected 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");
return false;
}
}
Comentarios