| // +--------------------------------------------------------------------+ // // $Id$ // // $URL$ // $Rev$ // $Date$ // $Author$ // require_once 'PEAR.php'; require_once 'DB.php'; /** * Manejo de permisos. * * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de * Leandro Lucarella * Las funciones de acceso publico se llaman igual que en Horas Extras * * @package SA_Perm * @version $Rev$ * @author $Author$ */ class SA_Perm extends PEAR { /** * Login del usuario * * @var string login */ var $login; /** * Permisos del usuario en el sistema. * * @var array permisos */ var $permisos; /** * Conexion a la Base de Datos . * * @var $DB */ var $DB; /** * Identificacion del sistema * * @var $sistema */ var $sistema; /** * Constructor. * * El login del usuario lo toma del udat * * @param int $sistema Identificacion del sistema (id_sistema) * * @return bool true si esta nrodoc, false en caso contrario * * @access public */ function SA_Perm($sistema, $login) { $creacion = false; //Asumo que va a fallar if (isset($sistema)) { $this->sistema = $sistema; $this->login = $login; $this->DB = $this->_conectarDB(); $this->permisos = $this->_obtenerPermisos(); $creacion = true; } return $creacion; } /** * Verifica los permisos de un usuario * * Compara los permisos que tiene un usuario en relacion a los * pasados como parametro. Devuelve true si cumple con todos los * permisos, en caso contrario devuelve false. Es de parametros * variables, y siempre necesita al menos UN parametro * * @param array permisos buscados * * @return bool * * @access public */ function tiene() { $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento $result = true; //Asumo que no va a fallar if (!count($args)) { $result = false; //Siempre se debe pasar al menos un permiso a buscar } else { if (count(array_diff($args, $this->permisos))){ $result = false; } } return $result; } //##TODO##: Crear la funcion tieneO simil tiene solo que chequea por or /** * Obtiene los permisos de un usuario de la base * * @return array con los permisos del usuario * * @access private */ function _obtenerPermisos() { $consultas = include 'samurai_lib_sql.inc'; $sql = $consultas['obtener_p_p_completo']; $sql_array = array ('0' => $this->sistema, '1' => $this->login); $result = $this->DB->getCol($sql,0, $sql_array); if (DB::isError($this->permisos)) { //En caso de error en la consulta, que lo muestro die ($this->permisos->getMessage()); } return $result; } /** * Conecta el objeto a la base de datos, segun lo especificado * en samurai_lib_db_conf.inc. * * @return db conexion hecha * * @access private */ function _conectarDB() { $datos = include 'samurai_lib_db_conf.inc'; $dsn = $datos['db_type']."://".$datos['db_user'].":".$datos['db_pass']."@".$datos['db_host']."/".$datos['db_name']; $db = DB::connect($dsn, true); //Quiero que la conexion sea persistente if (DB::isError($db)) { die($db->getMessage()); } return $db; } //Fin Clase } ?>