From 3c702b40a1806798e475c48abb456e5a9c2dac72 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Wed, 16 Jul 2003 19:53:10 +0000 Subject: [PATCH] FUNCIONALIDAD PRINCIPAL COMPLETA. Falta consultas, retocar las pantallas, y arreglar bugs --- doc/texto/SAMURAI_v1.rtf | 30 +-- doc/uml/Samurai.xmi | 64 ++++-- lib/SAMURAI/Permiso.php | 2 +- lib/SAMURAI/Sistema.php | 2 +- lib/SAMURAI/Sistema/consultas.php | 40 ---- lib/SAMURAI/Usuario.php | 284 +++++++++++++++++++++++--- lib/SAMURAI/Usuario/consultas.ini | 13 ++ sistema/conf/confSecciones.php | 12 +- sistema/www/index.php | 5 - sistema/www/perfiles/perfiles-abm.php | 7 +- sistema/www/permisos/permisos.php | 5 + sistema/www/usuarios/usuarios-abm.php | 164 +++++++++++++++ sistema/www/usuarios/usuarios.php | 78 +++++++ 13 files changed, 588 insertions(+), 118 deletions(-) delete mode 100644 lib/SAMURAI/Sistema/consultas.php create mode 100644 lib/SAMURAI/Usuario/consultas.ini create mode 100644 sistema/www/usuarios/usuarios-abm.php create mode 100644 sistema/www/usuarios/usuarios.php diff --git a/doc/texto/SAMURAI_v1.rtf b/doc/texto/SAMURAI_v1.rtf index bd631be..6b3adaf 100644 --- a/doc/texto/SAMURAI_v1.rtf +++ b/doc/texto/SAMURAI_v1.rtf @@ -24,7 +24,7 @@ \fi-360\li5040\jclisttab\tx5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid201981955\'01o;}{\levelnumbers;}\f2\chbrdr\brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li5760\jclisttab\tx5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid201981957\'01\u-3929 ?;}{\levelnumbers;}\f14\chbrdr \brdrnone\brdrcf1 \chshdng0\chcfpat1\chcbpat1\fbias0 \fi-360\li6480\jclisttab\tx6480 }{\listname ;}\listid1648389061}}{\*\listoverridetable{\listoverride\listid1648389061\listoverridecount0\ls1}}{\info{\title ADMINISTRACI\'d3N DE USUARIOS} -{\author Dir. Gral. de Inform\'e1tica}{\operator Dir. Gral. de Inform\'e1tica}{\creatim\yr2003\mo3\dy6\hr19\min20}{\revtim\yr2003\mo7\dy11\hr12\min29}{\printim\yr2003\mo2\dy6\hr11\min4}{\version21}{\edmins37}{\nofpages8}{\nofwords1101}{\nofchars6280} +{\author Dir. Gral. de Inform\'e1tica}{\operator Dir. Gral. de Inform\'e1tica}{\creatim\yr2003\mo3\dy6\hr19\min20}{\revtim\yr2003\mo7\dy15\hr15\min1}{\printim\yr2003\mo2\dy6\hr11\min4}{\version22}{\edmins36}{\nofpages8}{\nofwords1101}{\nofchars6280} {\*\company Ministerio de Econom\'eda}{\nofcharsws0}{\vern8249}}\paperw11907\paperh16840\margl1134\margr1134\margt1134\margb1134 \deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1134\dgvorigin1134\dghshow1\dgvshow1 \jexpand\viewkind1\viewscale75\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd \psz9\linex0\headery680\footery680\colsx708\endnhere\sectlinegrid360\sectdefaultcl @@ -38,7 +38,7 @@ \par }}{\footer \trowd \trgaph70\trleft-70\trbrdrt\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth4889 \cellx4819\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth4890 \cellx9709\pard\plain \s16\qj \li0\ri0\widctlpar\intbl \tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs18 06-03-2003\cell }\pard \s16\qr \li0\ri0\widctlpar\intbl -\tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs18 P\'e1gina }{\field{\*\fldinst {\fs18 PAGE }}{\fldrslt {\fs18\lang1024\langfe1024\noproof 7}}}{\fs18 de }{\field{\*\fldinst {\fs18 NUMPAGES }}{\fldrslt { +\tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs18 P\'e1gina }{\field{\*\fldinst {\fs18 PAGE }}{\fldrslt {\fs18\lang1024\langfe1024\noproof 6}}}{\fs18 de }{\field{\*\fldinst {\fs18 NUMPAGES }}{\fldrslt { \fs18\lang1024\langfe1024\noproof 8}}}{\fs18 \cell }\pard\plain \qj \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\trowd \trgaph70\trleft-70\trbrdrt\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl70\trpaddr70\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth4889 \cellx4819\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrnone \clbrdrb\brdrnone \clbrdrr\brdrnone \cltxlrtb\clftsWidth3\clwWidth4890 \cellx9709\row }\pard\plain \s16\qj \li0\ri0\widctlpar\tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 @@ -66,8 +66,8 @@ fffffffffffffffffdffffff04000000fefffffffefffffffeffffff060000000700000008000000 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff02000000111a020000000000c00000000000004600000000000000000000000060ec -7349c147c30103000000000200000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff02000000111a020000000000c0000000000000460000000000000000000000008020 +d01afb4ac30103000000000200000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010100000004000000ffffffff0000000000000000000000000000000000000000000000000000 0000000000000000000001000000690000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 000000000000000000000000030000000400000000000000feffffff02000000fefffffffefffffffeffffff0600000007000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff @@ -317,7 +317,6 @@ a80108000000250302004003b3014003c90108000000250302004003b3013503c901080000002503 \par }\pard\plain \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {Cada uno de los perfiles administrados. \par }{\ul id_perfil \par }{desc_perfil -\par tipo_perfil * \par fecha \par responsable \par @@ -327,6 +326,7 @@ a80108000000250302004003b3014003c90108000000250302004003b3013503c901080000002503 \par }{Asociaci\'f3n entre los perfiles y el sistema al cual corresponden. \par }{\ul R3 \par R4 +\par }{tipo_perfil *}{\ul \par }\pard\plain \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {fecha \par responsable \par }\pard\plain \s15\qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { @@ -618,7 +618,8 @@ un mismo usuario pueda ver las bandas horarias de diferentes dependencias, a par \par {\listtext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 -\tab}}\pard \qj \fi-360\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0 {Los datos del personal de la Ex \endash Coordinaci\'f3n \'c1 rea Desarrollo y Mantenimiento involucrado en el desarrollo de cada uno de los sistemas, forman parte de la entidad }{\i USUARIO,}{ relacionada al sistema correspondiente mediante la asignaci\'f3n de un perfil, identificando el rol que desempe\'f1\'f3 la persona (ejs.: programador, dise\'f1ador gr\'e1fico, analista de sistemas, etc.). -\par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {El atributo }{\i tipo_perfil}{ de la entidad }{\i PERFIL}{ +\par }\pard \qj \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 { +\par {\listtext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 -\tab}}\pard \qj \fi-360\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0 {El atributo }{\i tipo_perfil}{ de la entidad }{\i PERFIL/SISTEMA}{ diferencia perfiles internos y externos, es decir, si se trata de perfiles definidos para usuarios de los sistemas, o bien de roles desempe\'f1ados durante el desarrollo del proyecto (perfiles privados). \par }\pard \qj \li360\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin360\itap0 { \par {\listtext\pard\plain\fs20 \hich\af0\dbch\af0\loch\f0 -\tab}}\pard \qj \fi-360\li720\ri0\widctlpar\jclisttab\tx720\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0 {El atributo }{\i contacto}{ de la entidad }{\i SISTEMA}{ @@ -661,8 +662,7 @@ El atributo estado de la entidad SISTEMA indica el estado en que se encuentra el \par CREATE TABLE perfil ( \par id_perfil bigint(20) NOT NULL auto_increment, \par }{\f2\fs22\lang2058\langfe3082\langnp2058 desc_perfil varchar(50), -\par tipo_perfil char(1), -\par }{\f2\fs22\lang1033\langfe3082\langnp1033 fch_ult_modif timestamp, +\par }{\f2\fs22\lang1033\langfe3082\langnp1033 fch_ult_modif timestamp, \par }{\f2\fs22\lang2058\langfe3082\langnp2058 responsable varchar(20), \par PRIMARY KEY (id_perfil) \par ); @@ -675,7 +675,8 @@ El atributo estado de la entidad SISTEMA indica el estado en que se encuentra el \par CREATE TABLE perfil_sist ( \par id_perfil bigint(20) NOT NULL, \par id_sistema bigint(20) NOT NULL, -\par fch_ult_modif timestamp, +\par }{\f2\fs22\lang2058\langfe3082\langnp2058 tipo_perfil char(1), +\par }{\f2\fs22\lang1033\langfe3082\langnp1033 fch_ult_modif timestamp, \par }{\f2\fs22\lang2058\langfe3082\langnp2058 responsable varchar(20), \par PRIMARY KEY (id_perfil, id_sistema) \par ); @@ -703,10 +704,9 @@ El atributo estado de la entidad SISTEMA indica el estado en que se encuentra el \par id_permiso bigint(20) NOT NULL, \par id_perfil bigint(20) NOT NULL, \par id_sistema bigint(20) NOT NULL, -\par }{\f2\fs22\lang2058\langfe3082\langnp2058 observaciones varchar(255) NOT NULL, -\par }{\f2\fs22\lang1033\langfe3082\langnp1033 fch_ult_modif timestamp, +\par fch_ult_modif timestamp, \par }{\f2\fs22\lang2058\langfe3082\langnp2058 responsable varchar(20), -\par PRIMARY KEY (id_permiso, id_perfil, id_sistema, observaciones) +\par PRIMARY KEY (id_permiso, id_perfil, id_sistema) \par ); \par \par @@ -717,9 +717,9 @@ El atributo estado de la entidad SISTEMA indica el estado en que se encuentra el \par CREATE TABLE perm_sist ( \par id_permiso bigint(20) NOT NULL, \par id_sistema bigint(20) NOT NULL, -\par }{\f2\fs22\lang2058\langfe3082\langnp2058 observaciones varchar(255) NOT NULL, -\par }{\f2\fs22\lang1033\langfe3082\langnp1033 fch_ult_modif timestamp, -\par }{\f2\fs22\lang2058\langfe3082\langnp2058 responsable varchar(20), +\par }{\f2\fs22\lang2058\langfe3082\langnp2058 observaciones varchar(255), +\par fch_ult_modif timestamp, +\par responsable varchar(20), \par PRIMARY KEY (id_permiso, id_sistema, observaciones) \par ); \par diff --git a/doc/uml/Samurai.xmi b/doc/uml/Samurai.xmi index e85af38..fb79559 100644 --- a/doc/uml/Samurai.xmi +++ b/doc/uml/Samurai.xmi @@ -9,21 +9,42 @@ - + - + + + + + + + + + + + + + + + + + + + + + - + @@ -210,7 +231,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -246,26 +267,26 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + - - - - - - + + + + + + - - + + @@ -274,7 +295,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -306,7 +327,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -369,12 +390,21 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> + - + + + + + + + + + diff --git a/lib/SAMURAI/Permiso.php b/lib/SAMURAI/Permiso.php index ba96165..c2049c9 100644 --- a/lib/SAMURAI/Permiso.php +++ b/lib/SAMURAI/Permiso.php @@ -390,4 +390,4 @@ class SAMURAI_Permiso { } // -X2C Class :SAMURAI_Permiso -?> +?> \ No newline at end of file diff --git a/lib/SAMURAI/Sistema.php b/lib/SAMURAI/Sistema.php index 4afc77d..84299b5 100644 --- a/lib/SAMURAI/Sistema.php +++ b/lib/SAMURAI/Sistema.php @@ -929,4 +929,4 @@ class SAMURAI_Sistema { } // -X2C Class :SAMURAI_Sistema -?> +?> \ No newline at end of file diff --git a/lib/SAMURAI/Sistema/consultas.php b/lib/SAMURAI/Sistema/consultas.php deleted file mode 100644 index c1e0ec4..0000000 --- a/lib/SAMURAI/Sistema/consultas.php +++ /dev/null @@ -1,40 +0,0 @@ - -// +----------------------------------------------------------------------+ -// -// $Id$ -// $Author$ -// $URL$ -// $Date$ -// $Rev$ -// - return array ( - //OBTENER DATOS - 'obtener_datos_sistema' => 'SELECT id_sistema, nombre_sistema, desc_sistema, fecha_inicio, fecha_fin, fecha_implementacion, contacto,responsable FROM samurai.sistema ', - 'obtener_datos_sistema2' => ' WHERE id_sistema = ? ', - 'obtener_permisos' => 'SELECT id_permiso, observaciones FROM samurai.perm_sist WHERE id_sistema = ?', - 'obtener_permisos2' => ' ORDER BY id_permiso', - 'obtener_permisos3' => ' AND id_permiso = ?', - 'obtener_permisos4' => ' AND observaciones = ?', - 'obtener_max_id_sistemas' => 'SELECT IFNULL(max(id_sistema), 1) as id_sistema FROM samurai.sistema', - //BORRAR DATOS - 'borrar_permisos' => 'DELETE FROM samurai.perm_sist WHERE id_sistema = ? ', - 'borrar_permisos2' => ' AND observaciones = ?', - 'borrar_permisos3' => ' AND id_permiso = ?', - ); -?> diff --git a/lib/SAMURAI/Usuario.php b/lib/SAMURAI/Usuario.php index 6045156..57c0489 100644 --- a/lib/SAMURAI/Usuario.php +++ b/lib/SAMURAI/Usuario.php @@ -24,8 +24,8 @@ // $Rev$ // -#require_once 'PEAR.php'; - +require_once 'PEAR.php'; +require_once 'Perfil.php'; // +X2C Class 207 :SAMURAI_Usuario @@ -36,7 +36,7 @@ */ class SAMURAI_Usuario { /** - * Login del usuario en intranet.x2c: get set + * Login del usuario en intranet. * * @var string $login * @access protected @@ -60,20 +60,43 @@ class SAMURAI_Usuario { var $_nombre; /** - * Fecha de ultimo logueo del usuario a la intranet. + * Objeto Samurai_DB * - * @var date $fecha + * @var SAMURAI_DB $db * @access protected */ - var $_fecha; + var $_db; /** - * Objeto Samurai_DB + * Array con los identificadores de los perfiles asociados a un usuario * - * @var SAMURAI_DB $db + * @var array(int) $perfiles * @access protected */ - var $_db; + var $_perfiles; + + /** + * Gets Login. + * + * @return string + * @access public + */ + function getLogin() + { + return $this->_login; + } + /** + * Sets Login. + * + * @param string $login Login. + * + * @return void + * @access public + */ + function setLogin($login) + { + $this->_login = $login; + } /** * Gets Nrodoc. @@ -122,26 +145,26 @@ class SAMURAI_Usuario { } /** - * Gets Fecha. + * Gets Perfiles. * - * @return date + * @return array(int) * @access public */ - function getFecha() + function getPerfiles() { - return $this->_fecha; + return $this->_perfiles; } /** - * Sets Fecha. + * Sets Perfiles. * - * @param date $fecha Fecha. + * @param array(int) $perfiles Perfiles. * * @return void * @access public */ - function setFecha($fecha) + function setPerfiles($perfiles) { - $this->_fecha = $fecha; + $this->_perfiles = $perfiles; } // ~X2C @@ -158,29 +181,238 @@ class SAMURAI_Usuario { */ function SAMURAI_Usuario(&$db, $login = null) // ~X2C { + $this->_db = $db; + $this->setLogin($login); if (!is_null($login)) { - //BUSCAR INFO EN LA DB, - //SETEAR LAS VI + $this->_obtenerDatosDb(); + } + } + // -X2C + + // +X2C Operation 365 + /** + * Devuleve un array con los login's de los usuarios asociados al sistema + * + * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema + * + * @return array(string) + * @access protected + * @static + */ + function _getLoginUsuarios(&$db, $id_sistema = null) // ~X2C + { + //OBTENGO LOS LOGIN DE LA BASE + $consulta=''; + $rta = array(); + $tmp = array(); + $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); + if ($id_sistema) { + $consulta.= $sql['obtener_datos_usuario2']; + $tmp[] = $id_sistema; } else { - //INICIALIZO LA VI - $this->_login = null; - $this->_nrodoc = null; - $this->_nombre = null; - $this->_fecha = null; + $consulta = $sql['obtener_datos_usuario']; } + $consulta.= $sql['obtener_datos_usuario4']; + $dbh = $db->prepare($consulta); + $res = $db->execute($dbh, $tmp); + while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { + array_push($rta,$re['login']); + } + $res->free(); + return $rta; + } + // -X2C + // +X2C Operation 366 + /** + * Devuelve un array asociativo en donde la clave es el login y el valor es el nombre del usuario + * + * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema + * + * @return array() + * @access public + * @static + */ + function getArrayUsuarios(&$db, $id_sistema = null) // ~X2C + { + //FORECHEO LO QUE ME DEVUELVA GET USUARIOS + $rta = array (); + foreach (SAMURAI_Usuario::getUsuarios($db, $id_sistema) as $Usuario) { + $rta[$permiso->getLogin()] = $permiso->getNombre(); + } + return $rta; } // -X2C + // +X2C Operation 367 + /** + * Devuelve el array de usuarios + * + * @param SAMURAI_DB &$db Base de Datos + * @param int $id_sistema Identificador del sistema + * + * @return array(Permiso) + * @access public + * @static + */ + function getUsuarios(&$db, $id_sistema = null) // ~X2C + { + $rta = array (); + foreach (SAMURAI_Usuario::_getLoginUsuarios($db, $id_sistema) as $login) { + $tmp = new SAMURAI_Usuario($db,$login); + array_push($rta, $tmp); + } + return $rta; + } + // -X2C + // +X2C Operation 368 + /** + * Obtiene de la base de datos la informacion del usuario + * + * @return void + * @access protected + */ + function _obtenerDatosDb() // ~X2C + { + $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); + $tmp = $sql['obtener_datos_usuario'].$sql['obtener_datos_usuario3']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh,array($this->getLogin())); + if ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { + if (isset($re['nrodoc'])) { + $this->setNrodoc($re['nrodoc']); + } + else { + $this->setNrodoc(); + } + if (isset($re['nombre'])) { + $this->setNombre($re['nombre']); + } + else { + $this->setNombre(); + } + } + $tmp = $sql['obtener_perfiles_usuario']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema'])); + $rta = array(); + while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { + $tmp = new SAMURAI_Perfil($this->_db, $re['id_perfil']); + $rta[] = $tmp->getId(); + } + $this->setPerfiles($rta); + } + // -X2C + // +X2C Operation 370 + /** + * Modifica la base de datos segun accion + * + * @param string $accion Indica la accion a realizar + * + * @return mixed + * @access public + */ + function guardarDatos($accion = grabar) // ~X2C + { + $accion = strtolower($accion); + switch ($accion) { + case 'grabar': + $res = $this->_grabarDb(); + break; + case 'modificar': + $res = $this->_modificarDb(); + break; + case 'eliminar': + $res = $this->_borrarDb(); + break; + } + return $res; + } + // -X2C + // +X2C Operation 371 + /** + * Graba en base la relacion + * + * @return mixed + * @access protected + */ + function _grabarDb() // ~X2C + { + $datos = array ('login', 'id_perfil', 'id_sistema', 'responsable'); + $re = $this->_db->autoPrepare('perfil_sist_usuario', $datos, DB_AUTOQUERY_INSERT); + foreach ($this->getPerfiles() as $perfil) { + $datos = array ($this->getLogin(), + $perfil, + $_SESSION['samurai']['id_sistema'], + $_SESSION['samurai']['login']); + $res = $this->_db->execute($re, $datos); + if (PEAR::isError($res)) { + return $res; + } + } + } + // -X2C + // +X2C Operation 372 + /** + * Borra de la base la relacion + * + * @return mixed + * @access protected + */ + function _borrarDb() // ~X2C + { + $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); + $tmp = $sql['borrar']; + $dbh = $this->_db->prepare($tmp); + $tmp = array ($this->getLogin(), $_SESSION['samurai']['id_sistema']); + return $this->_db->execute($dbh,$tmp); + } + // -X2C + // +X2C Operation 373 + /** + * Actualiza los datos de la relacion + * + * @return mixed + * @access protected + */ + function _modificarDb() // ~X2C + { + $this->_borrarDb(); + $this->_grabarDb(); + } + // -X2C + // +X2C Operation 374 + /** + * Verifica si el login actual es valido + * + * @return mixed + * @access public + */ + function verificarLogin() // ~X2C + { + $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); + $tmp = $sql['verificar_login']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh,array($this->getLogin())); + $re = $res->fetchRow(DB_FETCHMODE_ASSOC); + if ($re['cuenta'] == 0) { + return new PEAR_Error('Usuario no reconocido.
Recuerde que éste debe haberse logueado previamente a Intranet'); + } + else { + return 1; + } + } + // -X2C } // -X2C Class :SAMURAI_Usuario - -?> \ No newline at end of file +?> diff --git a/lib/SAMURAI/Usuario/consultas.ini b/lib/SAMURAI/Usuario/consultas.ini new file mode 100644 index 0000000..2b146a1 --- /dev/null +++ b/lib/SAMURAI/Usuario/consultas.ini @@ -0,0 +1,13 @@ +; Configuración de la base de datos. +; $Id$ + + + +obtener_datos_usuario = " SELECT login, nrodoc, nombre FROM samurai.usuario " +obtener_datos_usuario3 = " WHERE login = ? " +obtener_datos_usuario4 = " ORDER BY login" +obtener_datos_usuario2 = " SELECT DISTINCT u.login as login FROM samurai.usuario as u, samurai.perfil_sist_usuario as psu WHERE u.login = psu.login AND id_sistema = ? " +obtener_perfiles_usuario = " SELECT id_perfil FROM samurai.perfil_sist_usuario WHERE login = ? AND id_sistema = ?" + +verificar_login = " SELECT count(*) as cuenta FROM samurai.usuario WHERE login = ?" +borrar = " DELETE FROM samurai.perfil_sist_usuario WHERE login = ? AND id_sistema = ?" diff --git a/sistema/conf/confSecciones.php b/sistema/conf/confSecciones.php index 05b90a9..afb45b1 100644 --- a/sistema/conf/confSecciones.php +++ b/sistema/conf/confSecciones.php @@ -48,22 +48,14 @@ 'imagenComun' => 'usuarios.gif', 'imagenMouseOn' => '', 'imagenSelect' => '', - 'link' => 'usuarios', + 'link' => 'usuarios/usuarios', 'tipoMenu' => 'oculto', 'hijos' => array ( - array ( 'nombre' => 'Filtrar Usuario', - 'imagenComun' => '', - 'imagenMouseOn' => '', - 'imagenSelect' => '', - 'link' => 'usuarios-filtrar', - 'subhijos' => array ( 'sarasa1', - ), - ), array ( 'nombre' => 'ABM Usuario', 'imagenComun' => '', 'imagenMouseOn' => '', 'imagenSelect' => '', - 'link' => 'usuarios-abm', + 'link' => 'usuarios/usuarios-abm', ), ), ), diff --git a/sistema/www/index.php b/sistema/www/index.php index f078c72..2f071e0 100644 --- a/sistema/www/index.php +++ b/sistema/www/index.php @@ -21,11 +21,6 @@ // require_once 'HTML/Image.php'; - //VEO SI HAY QUE ELEGIR EN QUE SISTEMA TRABAJAR {{{ - if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { - header('Location: sel-sistema'); - } - /// }}} $MARCO = new Marco ('../conf/confSecciones.php'); $MARCO->addBody(new HTML_Image('images/inicio.jpg')); $MARCO->setEspacios(false); diff --git a/sistema/www/perfiles/perfiles-abm.php b/sistema/www/perfiles/perfiles-abm.php index 42dcacb..485a13b 100644 --- a/sistema/www/perfiles/perfiles-abm.php +++ b/sistema/www/perfiles/perfiles-abm.php @@ -27,6 +27,7 @@ require_once 'SAMURAI/Perfil.php'; require_once 'SAMURAI/Permiso.php'; require_once 'SAMURAI/Sistema.php'; + require_once 'HTML/Image.php'; // }}} //CREO LOS OBJETO NECESARIOS {{{ if (@$_GET['id_perfil']) { @@ -84,7 +85,6 @@ $FORM->addRule ('permisos', 'Se debe seleccionar al menos un permiso', 'required'); // }}} //CARGO LOS DATOS SI YA EXISTEN EN BASE {{{ -// TODO Terminar de armar la parte de modificacion y eliminacion if (isset($_GET['accion']) && $_GET['accion'] != '') { //MODIFICACION $id_perfil =& $FORM->getElement ('id_perfil' ); @@ -154,9 +154,10 @@ } // }}} //DIBUJO LA PAGINA {{{ + $imagen = new HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); $TABLA3 = new Tabla ('cellspacing=0'); - $row = array ('SISTEMA: '.$SISTEMA->getNombre().''); - $TABLA3->addRow($row,'titulo align=left'); + $TABLA3->addRow($row,'align=left'); $MARCO = new Marco ('../../conf/confSecciones.php'); $MARCO->addTitle('ABM Perfil'); diff --git a/sistema/www/permisos/permisos.php b/sistema/www/permisos/permisos.php index b96088c..310da6c 100644 --- a/sistema/www/permisos/permisos.php +++ b/sistema/www/permisos/permisos.php @@ -30,6 +30,11 @@ $aHModifdes = 'No se puede modificar Permiso'; $aHElimdes = 'No se puede eliminar Permiso'; // }}} +//VEO SI HAY QUE ELEGIR EN QUE SISTEMA TRABAJAR {{{ +if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { + header('Location: ./../sel-sistema'); +} +// }}} //CREO LOS OBJETOS NECESARIOS {{{ $TABLA2 = new Tabla ('cellspacing=0'); $TABLA = new Tabla ('cellpadding=2'); diff --git a/sistema/www/usuarios/usuarios-abm.php b/sistema/www/usuarios/usuarios-abm.php new file mode 100644 index 0000000..63fe141 --- /dev/null +++ b/sistema/www/usuarios/usuarios-abm.php @@ -0,0 +1,164 @@ + +// +----------------------------------------------------------------------+ +// +// $Id$ +// + +//REQUIRE ONCE {{{ + //MECON {{{ + require_once 'MECON/HTML/QuickForm.php'; + require_once 'MECON/HTML/Tabla.php'; + require_once 'MECON/HTML/Error.php'; + //}}} + //SAMURAI {{{ + require_once 'SAMURAI/Perfil.php'; + require_once 'SAMURAI/Usuario.php'; + require_once 'SAMURAI/Sistema.php'; + //}}} + require_once 'HTML/Image.php'; +// }}} +//VEO SI HAY QUE ELEGIR EN QUE SISTEMA TRABAJAR {{{ +if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { + header('Location: ./../sel-sistema'); +} +// }}} +//CREO LOS OBJETOS NECESARIOS {{{ + if (@$_GET['login']) { + $login = $_GET['login']; + $validar = 0; + } + else { + $validar = 1; + $login = null; + } + $TABLA = new Tabla ('cellspacing=0'); + $FORM = new MECON_HTML_QuickForm ('usuarios_abm','post','usuarios-abm'); + $SISTEMA = new SAMURAI_Sistema($DB, $_SESSION['samurai']['id_sistema']); + $USUARIO = new SAMURAI_Usuario($DB, $login); +// }}} +//OBTENGO LOS DATOS DE LA BASE {{{ + $tmps = SAMURAI_Perfil::getPerfiles($DB, null, $_SESSION['samurai']['id_sistema']); + foreach ($tmps as $tmp) { + $PERFILES[$tmp->getId()] = $tmp->getDescripcion(); + } +//}}} +//AGREGO LOS DATOS A LAS TABLAS {{{ + $imagen = new HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); + $TABLA->addRow($row,'align=left'); +//}}} +//AGREGO LOS ELEMENTOS DEL FORM {{{ + $FORM->addElement ('header', 'cabecera' , 'ABM Usuarios'); + if ($login) { //Si esta el login solo permito modificar los perfiles asociados + $FORM->addElement ('static', 'login2', 'Login' , $login ); + $FORM->addElement ('hidden', 'login' , $login ); + $FORM->addElement ('static', 'nombre', 'Nombre', $USUARIO->getNombre()); + } + else { + $FORM->addElement ('text' , 'login' , 'Login' , array( 'value' => $login , 'size' => '20')); + } + $FORM->addElement ('select', 'perfiles' , 'Perfiles', $PERFILES, array('size' => '5', 'multiple' => 'true')); + $FORM->addElement ('hidden', 'responsable', $_SESSION['samurai']['login']); + $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar'); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:history.go(-1);return true;')); + $FORM->addGroup($group,'botones'); +// }}} +//AGREO LAS REGLAS DE VALIDACION {{{ + if (@$validar) { + $FORM->addRule ('login', 'Se debe ingresar el login del usuario', 'required'); + } + $FORM->addRule ('perfiles', 'Se debe seleccionar al menos un perfil', 'required'); +// }}} +//SETEO LOS PERFILES SELECCIONADOS {{{ + if (isset($_GET['accion']) && $_GET['accion'] != '') { + $perfiles =& $FORM->getElement ('perfiles'); + $group =& $FORM->getElement ('botones' ); + $group =& $group->getElements('aceptar' ); + $aceptar =& $group[0]; + + $perfiles->setSelected($USUARIO->getPerfiles()); + + //Modifico el valor del boton + $aceptar->setValue('Modificar'); + + //ELIMINACION -> modifico el valor del boton + if ($_GET['accion'] == 'e') { + $aceptar->setValue('Eliminar'); + $FORM->freeze(); + } + } +// }}} +//VALIDO EL FORMULARIO {{{ + if ($FORM->validate()) { + // VEO SI SE CANCELO {{{ + $botones = $FORM->getSubmitValue('botones'); + if (@$botones['cancelar']) { + header('Location: perfiles'); + } + // }}} + else { + $login2 =& $FORM->getElement ('login' ); + $nombre =& $FORM->getElement ('nombre' ); + $perfiles =& $FORM->getElement ('perfiles'); + $group =& $FORM->getElement ('botones' ); + $group =& $group->getElements('aceptar' ); + $aceptar =& $group[0]; + $res = ''; + + if ($login) { + $login3 = $login2->_text; + } + else { + $login3 = $login2->getValue(); + } + $USUARIO->setLogin($login3); + $res = $USUARIO->verificarLogin(); + if (PEAR::isError($res)) { + $ERROR = new MECON_HTML_Error($res->getMessage()); + } + else { + $USUARIO->setPerfiles($perfiles->getSelected()); + + $res = $USUARIO->guardarDatos($aceptar->getValue()); + + if (PEAR::isError($res)) { + $ERROR = new MECON_HTML_Error($res->getMessage()); + if ($aceptar->getValue() == 'Eliminar') { + $FORM->freeze(); + } + } + else { + $FORM->freeze(); + header('Location: usuarios'); + } + } + } + } +// }}} +//DIBUJO LA PAGINA {{{ + $MARCO = new Marco ('../../conf/confSecciones.php'); + $MARCO->addBody($TABLA); + if (isset($ERROR)) { + $MARCO->addBody($ERROR); + } + $MARCO->addBody($FORM); + $MARCO->display(); +// }}} +//FIN +?> diff --git a/sistema/www/usuarios/usuarios.php b/sistema/www/usuarios/usuarios.php new file mode 100644 index 0000000..e1a900e --- /dev/null +++ b/sistema/www/usuarios/usuarios.php @@ -0,0 +1,78 @@ + +// +----------------------------------------------------------------------+ +// +// $Id$ +// + +//REQUIRE ONCE {{{ + require_once 'MECON/HTML/Tabla.php'; + require_once 'SAMURAI/Usuario.php'; + require_once 'SAMURAI/Sistema.php'; + require_once 'HTML/Image.php'; +// }}} + +//LINKS A USUARIOS-ABM {{{ + $aHref = ''; + $aHrefModif = $aHref.'Modificar Usuario'; + $aHrefElim = $aHref.'Eliminar Usuario'; +// }}} +//VEO SI HAY QUE ELEGIR EN QUE SISTEMA TRABAJAR {{{ +if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { + header('Location: ./../sel-sistema'); +} +// }}} +//CREO LOS OBJETOS NECESARIOS {{{ + $TABLA2 = new Tabla ('cellspacing=0'); + $TABLA = new Tabla ('cellpadding=2'); + $TABLA3 = new Tabla ('cellspacing=0'); + $SISTEMA = new SAMURAI_Sistema($DB, $_SESSION['samurai']['id_sistema']); +// }}} +//OBTENGO LA INFORMACION DE LA BASE {{{ + $usuarios = SAMURAI_Usuario::getUsuarios($DB, $_SESSION['samurai']['id_sistema']); +// }}} +//AGREGO LOS DATOS A LAS TABLAS {{{ + $imagen = new HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); + $TABLA3->addRow($row,'align=left'); + $row = array ($aHref.'Agregar Nuevo Usuario'); + $TABLA2->addRow($row,'align=right'); + $row = array ('Login','Nombre','Modif.','Elim.'); + $TABLA->addRow($row,'cabecera'); + foreach ($usuarios as $usuario) { + $Modif = ereg_replace('##NUEVO##' , $usuario->getLogin(), $aHrefModif); + $Elim = ereg_replace('##NUEVO##' , $usuario->getLogin(), $aHrefElim ); + $Modif = ereg_replace('##ACCION##', 'm' , $Modif ); + $Elim = ereg_replace('##ACCION##', 'e' , $Elim ); + $row = array ( $usuario->getLogin(), + $usuario->getNombre(), + $Modif, + $Elim, + ); + $TABLA->addRow($row); + } +// }}} +//DIBUJO LA PAGINA {{{ + $MARCO = new Marco ('../../conf/confSecciones.php'); + $MARCO->addBody($TABLA3); + $MARCO->addBody($TABLA2->toHtml(1)); + $MARCO->addBody($TABLA); + $MARCO->display(); +// }}} +//FIN +?> -- 2.43.0