+<?php
+// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
+// +--------------------------------------------------------------------+
+// | SAMURAI - Samurai_Lib |
+// +--------------------------------------------------------------------+
+// | Sistema de Administracion y Matenimiento de Usuarios Relativo A |
+// | Intranet |
+// | Ministerio de Economía |
+// +--------------------------------------------------------------------+
+// | Creado: lun mar 10 ART 2003 |
+// | Autor: Martin Marrese <mmarre@mecon.gov.ar> |
+// +--------------------------------------------------------------------+
+//
+// $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 <llucar@mecon.gov.ar>
+ *
+ * @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 <usuario>@<organismo>
+ * @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
+}
+?>