Hoy comencé a trabajar sistema utilizando CakePHP en el cual necesito un control de acceso para distinguir entre dos usuarios, un administrador y un usuario normal, no quise usar ACL debido a lo básico de necesidad así que me puse a desarrollar mi propio sistema de control de acceso, con una pequeña variante en el software.
La solución es la siguiente:
En mi app_controller.php
function beforeFilter() { if($this->Session->check("Auth.User")) { if($this->_permisos($this->params,$this->Session->read("Auth.User.group_id")) == false) { $this->Session->setFlash("No tienes permiso para ingresar a esta area"); $this->redirect("/"); } } } function _permisos($params,$group) { $normal_permitido = array( 'users' => array(), 'tickets'=>array('add','view','index'), 'comments'=>array('add','view','index'), 'groups' => array(), 'types' => array(), 'subareas' => array(), 'areas' => array(), 'pages' => array('display') ); if($group != 1) { if(array_key_exists($params["controller"],$normal_permitido)) { if(in_array($params["action"], $normal_permitido[$params["controller"]])) { return true; } else { return false; } } else { return false; } } else { return true; } }
La idea es super simple si el usuario no es administrador solo podrá acceder a ciertas acciones los controladores. En el arreglo $normal_permitido se almacenan los controladores y las acciones que tiene permitido visitar.
Ojala les sirva.
Happy baking!




Recent Comments