| // +--------------------------------------------------------------------+ // // $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 * * @package SA_Perm * @version $Rev$ * @author $Author$ */ class SA_Perm extends PEAR { /** * Identificacion del usuario. * * @var int(11) nrodoc */ var $nrodoc; /** * Login del usuario * * @var string login */ var $login; /** * Consultas SQL. * * @var array SQL */ var $SQL; /** * Conexion a la Base de Datos . * * @var $DB */ var $DB; /** * Identificacion del sistema * * @var $sistema */ var $sistema /** * Constructor. * * @param int $nrodoc Numero de documento del usuario. * @param string $login Login del usuario de la forma @ * @param int $sistema Identificacion del sistema (id_sistema) * * @return bool true si esta nrodoc, false en caso contrario * * @access public */ function SA_Perm($nrodoc = null, $login = null, $sistema = null) { $creacion = false; //Asumo que va a fallar if (isset($nrodoc) && isset($sistema) && isset($login)) { $this->nrodoc = $nrodoc; $this->sistema = $sistema; $this->login = $login; $this->SQL = include 'samurai_lib_sql.inc'; $this->DB = $this->_SA_conectarDB(); $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 * * @param array permisos * * @return bool * * @access public */ function SA_verifPerm () { $args = func_get_args(); $result = true; //Asumo que no va a fallar if (!count($args)) { $result = false; } else { //Obtengo los perfiles de un usuario {{{ $sql = $this->SQL['obtener_perfil_usuario']; $re = $this->DB->prepare($sql); $re = $this->DB->execute($this->login, $this->sistema); // }}} // Por cada perfil, busco sus permisos y los comparo con los pasados // por el argumento {{{ while ($res = $re->fetchRow(DB_FETCHMODE_ASSOC)) { $sql = $this->SQL['obtener_permisos_perfil']; $re = $this->DB->prepare($sql); $re = $this->DB->execute($res['id_perfil'], $this->sistema); //TODO: Verificar que este tomando bien los datos de la base } /// }}} } return $result; } /** * Conecta el objeto a la base de datos, segun lo especificado * en samurai_lib_dc_conf.inc. * * @return db conexion hecha * * @access private */ function _SA_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 } ?>