From 2a767add127bcb217dcc2ce2ca242f703b5022a0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mart=C3=ADn=20Marrese?= Date: Thu, 17 Jul 2003 18:35:47 +0000 Subject: [PATCH] Bug Fixes Falta Consultas completo. Falta agregar los pop-ups en las diferentes listas. --- doc/texto/SAMURAI_v1.rtf | 63 +++++++++++----------- doc/uml/Samurai.xmi | 12 +++-- lib/SAMURAI/Perfil.php | 14 ++--- lib/SAMURAI/Usuario.php | 23 +++++++- lib/SAMURAI/Usuario/consultas.ini | 1 + sistema/www/perfiles/perfiles-abm.php | 25 +++++---- sistema/www/perfiles/perfiles-nuevo.php | 14 +++-- sistema/www/perfiles/perfiles.php | 5 +- sistema/www/permisos/permisos-abm.php | 2 +- sistema/www/permisos/permisos.php | 5 ++ sistema/www/sistemas/sistemas-abm.php | 4 +- sistema/www/sistemas/sistemas-permisos.php | 4 +- sistema/www/sistemas/sistemas.php | 13 ++--- sistema/www/usuarios/usuarios-abm.php | 43 +++++++++------ 14 files changed, 137 insertions(+), 91 deletions(-) diff --git a/doc/texto/SAMURAI_v1.rtf b/doc/texto/SAMURAI_v1.rtf index 6b3adaf..f6d0a30 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\dy15\hr15\min1}{\printim\yr2003\mo2\dy6\hr11\min4}{\version22}{\edmins36}{\nofpages8}{\nofwords1101}{\nofchars6280} +{\author Dir. Gral. de Inform\'e1tica}{\operator Dir. Gral. de Inform\'e1tica}{\creatim\yr2003\mo3\dy6\hr19\min20}{\revtim\yr2003\mo7\dy16\hr12\min54}{\printim\yr2003\mo2\dy6\hr11\min4}{\version27}{\edmins51}{\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 @@ -37,8 +37,8 @@ \tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { \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 6}}}{\fs18 de }{\field{\*\fldinst {\fs18 NUMPAGES }}{\fldrslt { +\tqc\tx4419\tqr\tx8838\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\fs18 16-07-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 1}}}{\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 -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff02000000111a020000000000c0000000000000460000000000000000000000008020 -d01afb4ac30103000000000200000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff02000000111a020000000000c000000000000046000000000000000000000000e06e +9f80b24bc30103000000000200000000000001004f006c00650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 0000000000000000000000001400000000000000010043006f006d0070004f0062006a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120002010100000004000000ffffffff0000000000000000000000000000000000000000000000000000 0000000000000000000001000000690000000000000003004f0062006a0049006e0066006f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000201ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 000000000000000000000000030000000400000000000000feffffff02000000fefffffffefffffffeffffff0600000007000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff @@ -220,7 +220,7 @@ e305b301040000002d01020004000000f0010700040000002d01030009000000fa02000001000000 2d0104000300000000000000}{\result {{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pictureGray}{\sv 0}}{\sp{\sn pictureBiLevel}{\sv 0}} {\sp{\sn pictureActive}{\sv 0}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fHitTestFill}{\sv 1}}{\sp{\sn fillShape}{\sv 1}}{\sp{\sn fillUseRect}{\sv 0}}{\sp{\sn fNoFillHitTest}{\sv 0}} {\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fReallyHidden}{\sv 0}}{\sp{\sn fScriptAnchor}{\sv 0}}{\sp{\sn fFakeMaster}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex85\picscaley85\piccropl0\piccropr0\piccropt0\piccropb0 -\picw19798\pich9320\picwgoal11224\pichgoal5284\wmetafile8\bliptag-708189380\blipupi-109{\*\blipuid d5c9e33ccf5e95ae8bc65263e2d2778a} +\picw19798\pich9320\picwgoal11224\pichgoal5284\wmetafile8\bliptag1843078360\blipupi-109{\*\blipuid 6ddb24d87db18b846243dd1b056fb5e6} 010009000003d90a00000800560000000000050000000b0200000000050000000c024d042209050000000902ffffff0005000000010200000000040000000201 02000500000001020000000007000000fc020000ffffff000000040000002d01000009000000fa02000001000000000000002200040000002d0101000e000000 240305000700c2003301c20033010700070007000700c20009000000fa02000000000000000000002200040000002d01020007000000fc020100000000000000 @@ -307,7 +307,7 @@ a80108000000250302004003b3014003c90108000000250302004003b3013503c901080000002503 020048012602330126020800000025030200480126023301310208000000250302004801260233011c02080000002503020089021c0289023102080000002503 020094021c0294023102040000002d01020004000000f0010700040000002d010500040000002d010400040000002d010000040000002d0106000c0000002403 0400d6010f02d6013d0206023d0206020f02040000002d010200040000002d0103000400000008010000050000000a0200000000040000000201010004000000 -2e01180005000000090200000000040000002d010500070000002105020052323002d901040000002d010400030000000000000000000000000000000000000000000000000000000000000000000000}}}}}{ +2e01180005000000090200000000040000002d010500070000002105020052323002d901040000002d0104000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000}}}}}{ \par \par \par }{\ul @@ -592,32 +592,30 @@ a80108000000250302004003b3014003c90108000000250302004003b3013503c901080000002503 \par }{nrodoc \par nombre \par fecha -\par }{\ul \par -\par }{* }{\ul Observaciones: +\par +\par +\par * }{\ul Observaciones: +\par \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 {La entidad }{\i USUARIO}{ obtiene los datos autom\'e1 ticamente a partir de los usuarios que se loguean en Intranet. \par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {El atributo }{\i login}{ corresponde a }{\i nick@organismo.}{ \par El atributo }{\i nombre }{es necesario, dado que existen agentes cuyo nombre y apellido no pueden localizarse en ninguna de las bases de datos provistas por Recursos Humanos. \par El tipo de documento no se considera, dado que no es posible obtenerse a partir del directorio }{\i LDAP}{. -\par El atributo }{\i fecha}{ contiene el momento del \'faltimo logueo del usuario a Intranet. (cada login reemplaza al anterior) -\par De esta forma, la descentralizaci\'f3n de la asignaci\'f3n de permisos, permite que el usuario administrador de un determinado sistema asigne permisos a nuevos usuarios sin necesidad de conocer otra dato m\'e1s que el login del usuario. (el resto de los d -atos son obtenidos de la entidad }{\i USUARIO}{, previamente cargada) -\par }\pard\plain \s17\qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { -Obviamente esto implica que los usuarios a los que se le asignen permisos deben haberse logueado previamente en Intranet. +\par De esta forma, la descentralizaci\'f3n de la asignaci\'f3n de permisos, permite que el usuario administrador de un determinado sistema asigne permisos a nuevos usuarios sin necesidad de conocer otra dato m\'e1 +s que el login del usuario. (el resto de los datos son obtenidos de la entidad }{\i USUARIO}{, previamente cargada) +\par }\pard\plain \s17\qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {Obviamente esto implica que los usuarios a los que s +e le asignen permisos deben haberse logueado previamente en Intranet. \par }\pard\plain \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { -\par El atributo }{\i fecha }{de la entidad }{\i USUARIO}{ es necesario porque, peri\'f3dicamente, la entidad es depurada, eliminando todos aquellos usuarios que no tengan ning\'fa -n permiso asignado y que no se hayan logueado a Intranet desde un determinado tiempo (por ejemplo, un mes). -\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 {El atributo }{\i observaciones }{de la entidad }{\i PERMISO / SISTEMA}{ contiene opcionalmente cualquier comentario o valor extra asociado con el permiso en cuesti\'f3n. -\par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {(Por ejemplo, para el caso de Ver Bandas Horarias de una determinada dependencia, se obtiene el c\'f3digo de dependencia deseado, permitiendo que -un mismo usuario pueda ver las bandas horarias de diferentes dependencias, a partir de la asignaci\'f3n de los respectivos permisos) +\par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {(Por ejemplo, para el caso de Ver Bandas Horarias de una determinada dependencia, se obtiene el c\'f3 +digo de dependencia deseado, permitiendo que un mismo usuario pueda ver las bandas horarias de diferentes dependencias, a partir de la asignaci\'f3n de los respectivos permisos) \par }\pard \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\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 {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 {\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 \lquote Coordinaci\'f3n de Operaci\'f3n y +Administraci\'f3n de Sistemas Inform\'e1ticos\rquote involucrado en el desarrollo de cada uno de los sistemas, forman parte de la entidad }{\i USUARIO,}{ relacionada al sistema correspondiente mediante la asignaci\'f3 +n 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 \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). @@ -631,20 +629,19 @@ rea Desarrollo y Mantenimiento involucrado en el desarrollo de cada uno de los s \par \'c1rea: ----- \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 {Cada una de las entidades contiene los atributos }{\i fecha}{ y }{\i responsable}{ - que representan el momento en que se realiz\'f3 el \'faltimo cambio en el registro y el usuario que lo llev\'f3 a cabo. -\par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {Estos dos campos sirven para llevar un control de qui\'e9n y en qu\'e9 momento se asignan nuevos permisos, se crean nuevos perfiles, etc. + que representan el momento en que se realiz\'f3 el \'faltimo cambio en el registro y el usuario que lo llev\'f3 a cabo. Estos dos campos sirven para llevar un control de qui\'e9n y en qu\'e9 momento se asignan nuevos permisos, se crean n +uevos perfiles, etc. +\par }\pard \qj \li708\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin708\itap0 {La entidad }{\i USUARIO}{ no tiene el atributo }{\i responsable}{, dado que los datos son obtenidos autom\'e1ticamente. \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 { -El atributo estado de la entidad SISTEMA indica el estado en que se encuentra el sistema (activo o no). Los sistemas no pueden ser eliminados de la base de datos, sino que son dados de baja. Al dar de baja un sistema, \'e9ste deja de estar activo. - +\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 estado}{ de la entidad }{\i SISTEMA}{ + indica el estado en que se encuentra el sistema (activo o no). Los sistemas no pueden ser eliminados de la base de datos, sino que son dados de baja. Al dar de baja un sistema, \'e9ste deja de estar activo. \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 {Tanto los nombres de sistemas, como los nombres de permisos no pueden repetirse. -\par }\pard \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { -\par \par }\pard\plain \s2\qj \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { -\par \page -\par Dise\'f1o F\'edsico +\par }\pard\plain \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { +\par }\pard\plain \s15\qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {\page +\par }\pard\plain \s2\qj \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 {Dise\'f1o F\'edsico \par }\pard\plain \qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs20\lang3082\langfe3082\cgrid\langnp3082\langfenp3082 { \par \par @@ -662,7 +659,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 }{\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 +672,7 @@ 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 }{\f2\fs22\lang2058\langfe3082\langnp2058 tipo_perfil char(1), +\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) diff --git a/doc/uml/Samurai.xmi b/doc/uml/Samurai.xmi index fb79559..2e0294c 100644 --- a/doc/uml/Samurai.xmi +++ b/doc/uml/Samurai.xmi @@ -9,7 +9,7 @@ - + @@ -36,6 +36,7 @@ + - + @@ -267,7 +268,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -279,7 +280,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -327,7 +328,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - + @@ -404,6 +405,7 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> + diff --git a/lib/SAMURAI/Perfil.php b/lib/SAMURAI/Perfil.php index a74a16f..87bc1ce 100644 --- a/lib/SAMURAI/Perfil.php +++ b/lib/SAMURAI/Perfil.php @@ -26,8 +26,6 @@ #require_once 'PEAR.php'; - - // +X2C Class 208 :SAMURAI_Perfil /** * Clase para el manejo de los perfies. @@ -313,10 +311,12 @@ class SAMURAI_Perfil { function _grabarDb() // ~X2C { //Obtengo el id del perfil de ser necesario + $nuevo = 0; if (!$this->getId()) { //No existe el perfil. Lo cargo por primera vez. $idPerfil = $this->_db->nextId('perfil'); $this->setId($idPerfil); + $nuevo = 1; } //GRABO EN PERM_PERFIL_SIST @@ -326,7 +326,7 @@ class SAMURAI_Perfil { } //GRABO EN PERFIL - if (!$this->getId()) { + if ($nuevo) { $datos = array ( 'id_perfil' => $idPerfil, 'desc_perfil' => $this->getDescripcion(), @@ -460,7 +460,7 @@ class SAMURAI_Perfil { } while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { array_push($rta,$re['id_perfil']); - } + } $res->free(); return $rta; } @@ -585,11 +585,13 @@ class SAMURAI_Perfil { while ($re = $res->fetchRow(DB_FETCHMODE_ASSOC)) { $perm[$re['id_perfil']][] = $re['id_permiso'].'##'.$re['observaciones']; } - foreach ($perm as $p) { + foreach ($perm as $key => $p) { $rta1 = array_diff($p, $this->getPermisos()); $rta2 = array_diff($this->getPermisos(), $p); if (!$rta1 && !$rta2) { - return new PEAR_Error("Ya existe un perfil con esos mismos permisos"); + echo 1; + $perf = new SAMURAI_Perfil($this->_db, $key); + return new PEAR_Error("El perfil \"".$perf->getDescripcion()."\" contiene los mismos permisos."); } } diff --git a/lib/SAMURAI/Usuario.php b/lib/SAMURAI/Usuario.php index 57c0489..f05e2ed 100644 --- a/lib/SAMURAI/Usuario.php +++ b/lib/SAMURAI/Usuario.php @@ -408,9 +408,28 @@ class SAMURAI_Usuario { if ($re['cuenta'] == 0) { return new PEAR_Error('Usuario no reconocido.
Recuerde que éste debe haberse logueado previamente a Intranet'); } - else { - return 1; + return 1; + } + // -X2C + + // +X2C Operation 375 + /** + * Verifica si el login actual ya esta asociado en base. + * + * @return mixed + * @access public + */ + function verificarAsociacionExistente() // ~X2C + { + $sql = parse_ini_file(dirname(__FILE__) . '/Usuario/consultas.ini', true); + $tmp = $sql['verificar_login2']; + $dbh = $this->_db->prepare($tmp); + $res = $this->_db->execute($dbh,array($this->getLogin(), $_SESSION['samurai']['id_sistema'])); + $re = $res->fetchRow(DB_FETCHMODE_ASSOC); + if ($re['login']) { + return new PEAR_Error('El usuario seleccionado ya esta cargado. Modifique sus opciones.'); } + return 1; } // -X2C diff --git a/lib/SAMURAI/Usuario/consultas.ini b/lib/SAMURAI/Usuario/consultas.ini index 2b146a1..14ec9ed 100644 --- a/lib/SAMURAI/Usuario/consultas.ini +++ b/lib/SAMURAI/Usuario/consultas.ini @@ -10,4 +10,5 @@ obtener_datos_usuario2 = " SELECT DISTINCT u.login as login FROM samurai.usuario 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 = ?" +verificar_login2 = " SELECT login FROM samurai.perfil_sist_usuario WHERE login = ? AND id_sistema = ?" borrar = " DELETE FROM samurai.perfil_sist_usuario WHERE login = ? AND id_sistema = ?" diff --git a/sistema/www/perfiles/perfiles-abm.php b/sistema/www/perfiles/perfiles-abm.php index 485a13b..6624d61 100644 --- a/sistema/www/perfiles/perfiles-abm.php +++ b/sistema/www/perfiles/perfiles-abm.php @@ -70,16 +70,21 @@ } // }}} //AGREGO LOS ELEMENTOS DEL FORM {{{ - $FORM->addElement ('header', 'cabecera', 'ABM Perfiles'); - $FORM->addElement ('hidden', 'id_perfil', $id_perfil); - $FORM->addElement ('hidden', 'desc_ant' , $descripcion); - $FORM->addElement ('static', 'desc_perfil', 'Descripcion', $descripcion); - $FORM->addElement ('select', 'permisos' , 'Permisos' , $PERMISOS, array('size' => '5', 'multiple' => 'true')); - $FORM->addElement ('select', 'tipo_perfil', 'Tipo Perfil', array('E' => 'Externo', 'I' => 'Interno', 'D' => 'Dios'), array ('size' => '1')); - $FORM->addElement ('hidden', 'responsable', $responsable); - $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'); + if (@$PERMISOS) { + $FORM->addElement ('header', 'cabecera', 'ABM Perfiles'); + $FORM->addElement ('hidden', 'id_perfil', $id_perfil); + $FORM->addElement ('hidden', 'desc_ant' , $descripcion); + $FORM->addElement ('static', 'desc_perfil', 'Descripcion', $descripcion); + $FORM->addElement ('select', 'permisos' , 'Permisos' , $PERMISOS, array('size' => '5', 'multiple' => 'true')); + $FORM->addElement ('select', 'tipo_perfil', 'Tipo Perfil', array('E' => 'Externo', 'I' => 'Interno', 'D' => 'Dios'), array ('size' => '1')); + $FORM->addElement ('hidden', 'responsable', $responsable); + $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar', array ('onClick' => 'javascript:if(confirm(\'¿Esta Seguro?\')) return true; return false;')); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location=\'perfiles\';return false;')); + $FORM->addGroup($group,'botones'); + } + else { + $ERROR = new MECON_HTML_Error('El sistema no posee permisos asociados.'); + } // }}} //AGREGO LAS REGLAS DE VALIDACION {{{ $FORM->addRule ('permisos', 'Se debe seleccionar al menos un permiso', 'required'); diff --git a/sistema/www/perfiles/perfiles-nuevo.php b/sistema/www/perfiles/perfiles-nuevo.php index 2522de7..fa39902 100644 --- a/sistema/www/perfiles/perfiles-nuevo.php +++ b/sistema/www/perfiles/perfiles-nuevo.php @@ -18,14 +18,15 @@ // +----------------------------------------------------------------------+ // // $Id$ -// +// +//REQUIRE_ONCE {{{ require_once 'PEAR.php'; require_once 'MECON/HTML/QuickForm.php'; require_once 'MECON/HTML/Tabla.php'; require_once 'SAMURAI/Perfil.php'; require_once 'SAMURAI/Sistema.php'; - +//}}} //CREO LOS OBJETO NECESARIOS {{{ $FORM = new MECON_HTML_QuickForm ('perfiles_nuevo','post','perfiles-nuevo'); $SISTEMA = new SAMURAI_Sistema ($DB, $_SESSION['samurai']['id_sistema']); @@ -37,7 +38,7 @@ $FORM->addElement ('text' , 'descripcion', 'Nombre' , array('size' => '50')); $group[] = HTML_QuickForm::createElement('submit', 'continuar', 'Continuar'); $group[] = HTML_QuickForm::createElement('submit', 'filtrar' , 'Filtrar' ); - $group[] = HTML_QuickForm::createElement('submit', 'cancelar' , 'Cancelar' ); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar' , 'Cancelar', array ('onClick' => 'javascript:window.location = ->\'perfiles\';return false;') ); $FORM->addGroup($group,'botones'); // }}} //RESTRINJO EL FORMATO DEL NOMBRE DEL PERFIL{{{ @@ -108,9 +109,12 @@ } // }}} //MUESTRO LA PAGINA {{{ +//AGREGO LOS DATOS A LAS TABLAS {{{ $TABLA3 = new Tabla ('cellspacing=0'); - $row = array ('SISTEMA: '.$SISTEMA->getNombre().''); - $TABLA3->addRow($row,'titulo align=left'); + $imagen = new HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); + $TABLA3->addRow($row,'align=left'); +//}}} $MARCO = new Marco ('../../conf/confSecciones.php'); $MARCO->addBody($TABLA3); diff --git a/sistema/www/perfiles/perfiles.php b/sistema/www/perfiles/perfiles.php index c51625b..4445920 100644 --- a/sistema/www/perfiles/perfiles.php +++ b/sistema/www/perfiles/perfiles.php @@ -44,8 +44,9 @@ if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { $perfiles = SAMURAI_Perfil::getPerfiles($DB, null, $_SESSION['samurai']['id_sistema']); // }}} //AGREGO LOS DATOS A LAS TABLAS {{{ - $row = array ('SISTEMA: '.$SISTEMA->getNombre().''); - $TABLA3->addRow($row,'titulo align=left'); + $imagen = new HTML_Image('/MECON/images/vinetas_flecha_doble.gif'); + $row = array ($imagen->toHtml().' SISTEMA: '.$SISTEMA->getNombre().''); + $TABLA3->addRow($row,'align=left'); $row = array ('Ingresar Nuevo Perfil'); $TABLA2->addRow($row,'align=right'); $row = array ('Id','Descripcion','Tipo','Modif.','Elim.'); diff --git a/sistema/www/permisos/permisos-abm.php b/sistema/www/permisos/permisos-abm.php index 1012b8c..5767f15 100644 --- a/sistema/www/permisos/permisos-abm.php +++ b/sistema/www/permisos/permisos-abm.php @@ -38,7 +38,7 @@ $FORM->addElement ('hidden', 'id_permiso'); $FORM->addElement ('text' , 'desc_permiso', 'Descripcion', array('size'=>'50')); $FORM->addElement ('hidden', 'responsable' , $_SESSION['samurai']['login']); - $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar'); + $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar', array ('onClick' => 'javascript:if (confirm(\'¿Esta Seguro?\')) return true;return false;')); $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:history.go(-1);return true;')); $FORM->addGroup($group,'botones'); // }}} diff --git a/sistema/www/permisos/permisos.php b/sistema/www/permisos/permisos.php index 310da6c..c286052 100644 --- a/sistema/www/permisos/permisos.php +++ b/sistema/www/permisos/permisos.php @@ -65,6 +65,11 @@ if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { $Elim, ); $TABLA->addRow($row); + $TABLA->updateColAttributes(0,'width="10%" '); + $TABLA->updateColAttributes(1,'width="70%"'); + $TABLA->updateColAttributes(2,'width="10%"'); + $TABLA->updateColAttributes(3,'width="10%"'); + $TABLA->updateRowAttributes(0,'cabecera'); } // }}} //DIBUJO LA PAGINA {{{ diff --git a/sistema/www/sistemas/sistemas-abm.php b/sistema/www/sistemas/sistemas-abm.php index 6b46103..1110161 100644 --- a/sistema/www/sistemas/sistemas-abm.php +++ b/sistema/www/sistemas/sistemas-abm.php @@ -48,8 +48,8 @@ $FORM->addElement ('textarea', 'contacto' , 'Contacto' , array('rows' => '2','cols'=>'50')); $FORM->addElement ('select' , 'permisos' , 'Permisos' , $PERMISOS, array('size' => '5', 'multiple' => 'multiple')); $FORM->addElement ('hidden' , 'responsable' , $_SESSION['samurai']['login']); - $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar'); - $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar'); + $group[] = HTML_QuickForm::createElement('submit', 'aceptar' , 'Grabar', array ('onClick' => 'javascript:if (confirm(\'¿Esta Seguro?\')) return true;return false;')); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location = ->\'sistemas\';return false;')); $FORM->addGroup($group,'botones'); // }}} //AGREGO LAS REGLAS DE VALIDACION DE LOS ELEMENTOS {{{ diff --git a/sistema/www/sistemas/sistemas-permisos.php b/sistema/www/sistemas/sistemas-permisos.php index 572eb16..16c0710 100644 --- a/sistema/www/sistemas/sistemas-permisos.php +++ b/sistema/www/sistemas/sistemas-permisos.php @@ -161,11 +161,12 @@ // }}} //OPCION VOLVER {{{ $TABLAVOLVER = new Tabla ('cellspacing=0'); - $row = array (' Volver a Sistemas'); + $row = array (' Volver a Sistemas'); $TABLAVOLVER->addRow($row,'align=left'); // }}} //DIBUJO LA PAGINA {{{ $MARCO = new Marco ('../../conf/confSecciones.php'); + $MARCO->addBody($TABLAVOLVER); $MARCO->addTitle('Asociar Permisos y Sistemas'); //AGREGO LA TABLA DEL SISTEMA $MARCO->addBody($TABLASIST); @@ -179,7 +180,6 @@ $MARCO->addBody('
'); //AGREGO LA TABLA DE PERMISOS $MARCO->addBody($TABLAPERM); - $MARCO->addBody($TABLAVOLVER); $MARCO->display(); // }}} //FIN diff --git a/sistema/www/sistemas/sistemas.php b/sistema/www/sistemas/sistemas.php index e215fd4..b033aa9 100644 --- a/sistema/www/sistemas/sistemas.php +++ b/sistema/www/sistemas/sistemas.php @@ -1,5 +1,5 @@ Ingresar Nuevo Sistema'); - $TABLA2->addRow($row,'align=right'); + $row = array ('Seleccionar otro sistema para trabajar', $aHref.'Ingresar Nuevo Sistema'); + $TABLA2->addRow($row); + $TABLA2->setColAlign(0,'left'); + $TABLA2->setColAlign(1,'right'); $TABLA = new Tabla ('cellpadding=2'); $row = array ('Id','Nombre','Descripcion','Fecha Inicio','Fecha Fin','Fecha Impl.','Contacto','Modif.','Elim.','Perm.'); @@ -68,10 +70,6 @@ $TABLA->addRow($row); } - //Agrego la opcion de seleccionar otro sistema para trabajar - $TABLA3 = new Tabla ('cellspacing=0'); - $row = array ('Seleccionar otro sistema para trabajar '); - $TABLA3->addRow($row,'align=right'); @@ -80,6 +78,5 @@ $MARCO = new Marco ('../../conf/confSecciones.php'); $MARCO->addBody($TABLA2->toHtml(1)); $MARCO->addBody($TABLA); - $MARCO->addBody($TABLA3->toHtml(1)); $MARCO->display(); ?> diff --git a/sistema/www/usuarios/usuarios-abm.php b/sistema/www/usuarios/usuarios-abm.php index 63fe141..c358003 100644 --- a/sistema/www/usuarios/usuarios-abm.php +++ b/sistema/www/usuarios/usuarios-abm.php @@ -64,26 +64,33 @@ if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { $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()); + if (@$PERFILES) { + $FORM->addElement ('header', 'cabecera' , 'ABM Usuarios'); + if ($login) { //Si esta el login solo permito modificar los perfiles asociados + $FORM->addElement ('static', 'login2', 'Login@Organismo' , $login ); + $FORM->addElement ('hidden', 'login' , $login ); + $FORM->addElement ('static', 'nombre', 'Nombre', $USUARIO->getNombre()); + } + else { + $FORM->addElement ('text' , 'login' , 'Login@Organismo' , 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', array ('onClick' => 'javascript:if (confirm(\'¿Esta Seguro?\')) return true;return false;')); + $group[] = HTML_QuickForm::createElement('submit', 'cancelar', 'Cancelar', array ('onClick' => 'javascript:window.location = \'usuarios\';return false;')); + $FORM->addGroup($group,'botones'); } else { - $FORM->addElement ('text' , 'login' , 'Login' , array( 'value' => $login , 'size' => '20')); + $ERROR = new MECON_HTML_Error('El sistema no posee perfiles.'); } - $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'); + if (@$PERFILES) { + if (@$validar) { + $FORM->addRule ('login', 'Se debe ingresar el login del usuario', 'required'); + } + $FORM->addRule ('perfiles', 'Se debe seleccionar al menos un perfil', 'required'); } - $FORM->addRule ('perfiles', 'Se debe seleccionar al menos un perfil', 'required'); // }}} //SETEO LOS PERFILES SELECCIONADOS {{{ if (isset($_GET['accion']) && $_GET['accion'] != '') { @@ -128,10 +135,16 @@ if (!@$_SESSION['samurai']['id_sistema'] || !@$_SESSION['samurai']['login']) { $login3 = $login2->getValue(); } $USUARIO->setLogin($login3); - $res = $USUARIO->verificarLogin(); + $res = $USUARIO->verificarLogin(); + if ($aceptar->getValue() == 'Grabar') { + $res2 = $USUARIO->verificarAsociacionExistente(); + } if (PEAR::isError($res)) { $ERROR = new MECON_HTML_Error($res->getMessage()); } + elseif (PEAR::isError($res2)) { + $ERROR =new MECON_HTML_Error($res2->getMessage()); + } else { $USUARIO->setPerfiles($perfiles->getSelected()); -- 2.43.0