Acl con Auth

edited abril 2013 in Dudas/Problemas
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

  • Buen día ya revise el codigo y con apoyo de un camarada me hizo falta poner el campo valido de rol debe de ser igual al de mi tabla que es nivel_id if(Auth::is_valid()) $this->userRol = Auth::get("rol");

    quedo asi  if(Auth::is_valid()) $this->userRol = Auth::get("nivel_id");
Sign In or Register to comment.