include 'samurai_lib.php';
-$permiso = new SA_Perm(1,'mmarre@mecon');
+print "Prueba Objeto SA_Perm de samurai_lib<BR>";
-$martin = $permiso->tiene(1,2,3,4,5,6,7,3);
+$permiso = new SA_Perm(1,'mdegan@mecon');
-var_dump($martin);
+print "<BR>Probando la funcion tiene -> ";
+if ($permiso->tiene(1,2,3,4,5,6,7,3)) {
+ print "Tiene todos los permisos<BR>";
+}
+else {
+ print "No tiene todos los permisos<BR>";
+}
+print "<BR>Probando la funcion tieneO -> ";
+if ($permiso->tieneO(1,2,3,4,5,7,3)) {
+ print "Tiene alguno de los permisos<BR>";
+}
+else {
+ print "No tiene permiso alguno<BR>";
+}
+
+print "<BR>Probando la funcion tieneUn -> ";
+if ($permiso->tieneO(2)) {
+ print "Tiene EL permiso<BR>";
+}
+else {
+ print "No tiene EL permiso<BR>";
+}
?>
*
* Libreria para le manejo de los permisos. Basada en la lase HE_Perm de
* Leandro Lucarella <llucar@mecon.gov.ar>
- * Las funciones de acceso publico se llaman igual que en Horas Extras
+ * Las funciones de acceso publico se llaman igual que en HE_Perm
+ * Archivos Requeridos
+ * samurai_lib_sql.inc -> Consultas SQL utilizadas por el objeto
+ * samurai_lib_db_conf.inc -> Datos de la conexion con la base de datos
*
* @package SA_Perm
* @version $Rev$
* @author $Author$
*/
+
+// Comienzo Clase {{{
class SA_Perm extends PEAR {
/**
* 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
+ * @param string $login Identificacion del usuario (udat{user}
*
* @access public
*/
function SA_Perm($sistema, $login)
{
- $creacion = false; //Asumo que va a fallar
- if (isset($sistema)) {
+ if (isset($sistema) && isset($login)) {
$this->sistema = $sistema;
$this->login = $login;
$this->DB = $this->_conectarDB();
$this->permisos = $this->_obtenerPermisos();
- $creacion = true;
}
- return $creacion;
}
/**
*/
function tiene()
{
- $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
+ $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
return $result;
}
- //##TODO##: Crear la funcion tieneO simil tiene solo que chequea por or
+ /**
+ * 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 alguno de 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 tieneO()
+ {
+ $args = func_get_args(); //Obtengo los permisos que me pasaron como argumento
+ $result = true; //Asumo que no va a fallar
+ if (!count($args)) { //Siempre se debe pasar al menos un permiso a buscar
+ $result = false;
+ }
+ else {
+ if (count(array_diff($args, $this->permisos)) >= count($args)) {
+ $result = false;
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * Verifica los permisos de un usuario
+ *
+ * Compara un permiso pasado por parametro con los que tiene el usuario
+ * en la base. Devuelve true si tiene el permiso, false en otro caso
+ *
+ * @param int permiso buscado
+ *
+ * @return bool
+ *
+ * @access public
+ */
+ function tieneUn($permiso)
+ {
+ $result = true; //Asumo que no va a fallar
+ if (!isset($permiso)) { //Tiene que pasar un permiso si o si
+ $result = false;
+ }
+ else {
+ if (!in_array($permiso, $this->permisos)) { //Si no esta en el array, no tiene el permiso
+ $result = false;
+ }
+ }
+ return $result;
+ }
+
+//HASTA ACA FUNCIONES PUBLICAS
+//DESDE ACA FUNCIONES PRIVADAS
/**
* Obtiene los permisos de un usuario de la base
*/
function _obtenerPermisos()
{
- $consultas = include 'samurai_lib_sql.inc';
- $sql = $consultas['obtener_p_p_completo'];
+ $consultas = include '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
+ $result = $this->DB->getCol($sql,0, $sql_array);
+ if (DB::isError($this->permisos)) { //En caso de error en la consulta, que lo muestre
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
+ * @return db conexion con la base
*
* @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
+ $datos = include '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
}
+// }}} Fin Clase
+
?>