2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // | SAMURAI - Samurai_Lib |
5 // +--------------------------------------------------------------------+
6 // | Sistema de Administracion y Matenimiento de Usuarios Relativo A |
8 // | Ministerio de EconomÃa |
9 // +--------------------------------------------------------------------+
10 // | Creado: lun mar 10 ART 2003 |
11 // | Autor: Martin Marrese <mmarre@mecon.gov.ar> |
12 // +--------------------------------------------------------------------+
22 require_once 'PEAR.php';
23 require_once 'DB.php';
28 * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de
29 * Leandro Lucarella <llucar@mecon.gov.ar>
30 * Las funciones de acceso publico se llaman igual que en HE_Perm
32 * Perm/sql_Conf.php -> Consultas SQL utilizadas por el objeto
33 * Perm/db_Conf.php -> Datos de la conexion con la base de datos
40 class SA_Perm extends PEAR {
50 * Permisos del usuario en el sistema.
58 * Conexion a la Base de Datos .
65 * Identificacion del sistema
74 * El login del usuario lo toma del udat
76 * @param int $sistema Identificacion del sistema (id_sistema)
77 * @param string $login Identificacion del usuario (udat{user}
81 function SA_Perm($sistema, $login)
84 $this->sistema = $sistema;
85 $this->login = $login;
86 $this->DB = $this->_conectarDB();
87 $this->permisos = $this->_obtenerPermisos();
91 * Verifica los permisos de un usuario
93 * Compara los permisos que tiene un usuario en relacion a los
94 * pasados como parametro. Devuelve true si cumple con todos los
95 * permisos, en caso contrario devuelve false. Es de parametros
96 * variables, y siempre necesita al menos UN parametro
98 * @param array $permisos Permisos que se buscan
106 $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
107 $result = true; //Asumo que no va a fallar
109 $result = false; //Siempre se debe pasar al menos un permiso a buscar
112 if (count(array_diff($args, $this->permisos))){
120 * Verifica los permisos de un usuario
122 * Compara los permisos que tiene un usuario en relacion a los
123 * pasados como parametro. Devuelve true si cumple con alguno de los
124 * permisos, en caso contrario devuelve false. Es de parametros
125 * variables, y siempre necesita al menos UN parametro
127 * @param array $permisos Permisos que se buscan
135 $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
136 $result = true; //Asumo que no va a fallar
137 if (!count($args)) { //Siempre se debe pasar al menos un permiso a buscar
141 if (count(array_diff($args, $this->permisos)) >= count($args)) {
149 * Verifica los permisos de un usuario
151 * Compara los permisos que tiene un usuario en relacion a los
152 * pasados como parametro. Devuelve un array con aquellos permisos que
153 * el usuario tiene. Funciona similar a tieneO solo que devuelve un array.
154 * Es de parametros variables, y siempre necesita al menos UN parametro
156 * @param array $permisos Permisos que se buscan
158 * @return array Permisos que tiene el usuario pasados por parametro, o 'ERROR' en caso contrario
162 function tieneODevol ()
164 $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
168 $result['0'] = 'ERROR'; //Siempre se debe pasar al menos un permiso a buscar
171 $result = array_intersect($args, $this->permisos);
177 * Verifica los permisos de un usuario
179 * Compara un permiso pasado por parametro con los que tiene el usuario
180 * en la base. Devuelve true si tiene el permiso, false en otro caso
182 * @param int permiso buscado
188 function tieneUn($permiso)
190 $result = true; //Asumo que no va a fallar
191 if (!in_array($permiso, $this->permisos)) { //Si no esta en el array, no tiene el permiso
198 * Devuelve los permisos de un usuario
200 * Devuelve un array con los permisos que posee el usuario en el sistema
201 * que se paso como parametro al constructor. Devuelve un array.
207 function listaPermisos()
209 return $this->permisos;
214 //HASTA ACA FUNCIONES PUBLICAS
215 //DESDE ACA FUNCIONES PRIVADAS
218 * Obtiene los permisos de un usuario de la base
220 * @return array permisos del usuario
224 function _obtenerPermisos()
226 $consultas = include 'Perm/sql_Conf.php';
227 $sql = $consultas['obtener_p_p_completo'];
228 $sql_array = array ('0' => $this->sistema, '1' => $this->login);
229 $result = $this->DB->getCol($sql,0, $sql_array);
230 if (DB::isError($this->permisos)) { //En caso de error en la consulta, que lo muestre
231 die ($this->permisos->getMessage());
237 * Conecta el objeto a la base de datos
239 * @return db conexion con la base
243 function _conectarDB()
245 $datos = include 'Perm/db_Conf.php';
246 $dsn = $datos['db_type']."://".$datos['db_user'].":".$datos['db_pass']."@".$datos['db_host']."/".$datos['db_name'];
247 $db = DB::connect($dsn, true); //Quiero que la conexion sea persistente
248 if (DB::isError($db)) { //En caso de error en la conexion que la muestre
249 die($db->getMessage());