]> git.llucax.com Git - mecon/samurai.git/blob - lib/samurai_lib.php
Se agrega SAMURAI lib (o un primer intento).
[mecon/samurai.git] / lib / samurai_lib.php
1 <?php
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  |
7 // |                             Intranet                               |
8 // |                      Ministerio de Economía                        |
9 // +--------------------------------------------------------------------+
10 // | Creado: lun mar 10 ART 2003                                        |
11 // | Autor:  Martin Marrese <mmarre@mecon.gov.ar>                       |
12 // +--------------------------------------------------------------------+
13 //
14 // $Id$
15 //
16 // $URL$
17 // $Rev$
18 // $Date$
19 // $Author$
20 //
21
22 require_once 'PEAR.php';
23 require_once 'DB.php';
24
25 /**
26  * Manejo de permisos.
27  *
28  * Libreria para le manejo de los permisos. Basada en la lase HE_Perm de 
29  * Leandro Lucarella <llucar@mecon.gov.ar>
30  *
31  * @package SA_Perm
32  * @version $Rev$
33  * @author  $Author$
34  */
35 class SA_Perm extends PEAR {
36     
37     /**
38      * Identificacion del usuario.
39      *
40      * @var int(11) nrodoc
41      */     
42     var $nrodoc;
43
44     /**
45      * Login del usuario
46      *
47      * @var string login
48      */
49      var $login;
50     
51     /**
52      * Consultas SQL.
53      *
54      * @var array  SQL
55      */     
56     var $SQL;
57
58
59     /**
60      * Conexion a la Base de Datos .
61      *
62      * @var $DB
63      */     
64     var $DB;
65
66     /**
67      * Identificacion del sistema
68      *
69      * @var $sistema
70      */
71      var $sistema
72     
73     /**
74      * Constructor.
75      *
76      * @param int    $nrodoc  Numero de documento del usuario.
77      * @param string $login   Login del usuario de la forma <usuario>@<organismo>
78      * @param int    $sistema Identificacion del sistema (id_sistema)
79      * 
80      * @return bool true si esta nrodoc, false en caso contrario
81      *
82      * @access public
83      */
84     function SA_Perm($nrodoc = null, $login = null,  $sistema = null)
85     {        
86         $creacion = false;  //Asumo que va a fallar
87         if (isset($nrodoc) && isset($sistema) && isset($login)) {
88             $this->nrodoc  = $nrodoc;
89             $this->sistema = $sistema;
90             $this->login   = $login;
91             $this->SQL     = include 'samurai_lib_sql.inc';
92             $this->DB      = $this->_SA_conectarDB();
93             $creacion = true;
94         }
95         return $creacion;
96     }
97
98     /**
99      * Verifica los permisos de un usuario
100      * 
101      * Compara los permisos que tiene un usuario en relacion a los 
102      * pasados como parametro. Devuelve true si cumple con todos los
103      * permisos, en caso contrario devuelve false
104      *
105      * @param array permisos
106      *
107      * @return bool
108      *
109      * @access public
110      */
111     function SA_verifPerm () 
112     {
113         $args = func_get_args();
114         $result = true; //Asumo que no va a fallar
115
116         if (!count($args)) {
117             $result = false;
118         }
119         else {
120             //Obtengo los perfiles de un usuario {{{
121             $sql = $this->SQL['obtener_perfil_usuario'];
122             $re  = $this->DB->prepare($sql);
123             $re  = $this->DB->execute($this->login, $this->sistema);
124             // }}}
125             
126             // Por cada perfil, busco sus permisos y los comparo con los pasados
127             // por el argumento {{{
128             while ($res = $re->fetchRow(DB_FETCHMODE_ASSOC)) {
129                 $sql = $this->SQL['obtener_permisos_perfil'];
130                 $re  = $this->DB->prepare($sql);
131                 $re  = $this->DB->execute($res['id_perfil'], $this->sistema);
132                 //TODO: Verificar que este tomando bien los datos de la base
133             }
134             /// }}}
135         }
136         return $result; 
137     }
138
139     /**
140      * Conecta el objeto a la base de datos, segun lo especificado
141      * en samurai_lib_dc_conf.inc.
142      *
143      * @return db conexion hecha
144      * 
145      * @access private
146      */    
147     function _SA_conectarDB ()
148     {
149         $datos = include 'samurai_lib_db_conf.inc';
150         $dsn = $datos['db_type']."://".$datos['db_user'].":".$datos['db_pass']."@".$datos['db_host']."/".$datos['db_name'];     
151         $db = DB::connect($dsn, true); //Quiero que la conexion sea persistente
152         if (DB::isError($db)) {
153             die($db->getMessage());
154         }
155         return $db;
156     }
157
158     //Fin Clase
159 }
160 ?>