From: Leandro Lucarella Date: Thu, 31 Jul 2003 21:24:35 +0000 (+0000) Subject: Se agrega SAMURAI_Perm para manejar los permisos desde las aplicaciones. X-Git-Tag: svn_import~101 X-Git-Url: https://git.llucax.com/mecon/samurai.git/commitdiff_plain/daf576bd3b87a333563f7d61dbcd6d73a5316713 Se agrega SAMURAI_Perm para manejar los permisos desde las aplicaciones. --- diff --git a/doc/uml/Samurai.xmi b/doc/uml/Samurai.xmi index a94e688..5240596 100644 --- a/doc/uml/Samurai.xmi +++ b/doc/uml/Samurai.xmi @@ -3,13 +3,13 @@ umbrello uml modeller http://uml.sf.net - 1.1 + 1.1.5 - + - + @@ -37,13 +37,6 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - + + + + - - + + - + + + + + + + + - - + + - + + + + + + + + - - + + - + + + + + + + + - - + + - + + + + + + + + - - + + - + - - - - - - + + + + + + + - + + + + - - + + - - - + + + + + + + + + + - + - - + + + + + + + @@ -327,43 +390,43 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - - - - - - - + + + + + - - - - - - - + + + + + + + + + @@ -381,14 +444,9 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - - - - - @@ -399,27 +457,29 @@ x2c:include: DB.php" name="DB" static="0" scope="200" /> - - + + + + + + - - - - - - + + + + diff --git a/lib/SAMURAI/Perm.php b/lib/SAMURAI/Perm.php new file mode 100644 index 0000000..de949de --- /dev/null +++ b/lib/SAMURAI/Perm.php @@ -0,0 +1,141 @@ + | +// +--------------------------------------------------------------------+ +// +// $Id$ +// + +// +X2C Class 377 :SAMURAI_Perm +/** + * Chequeador de permisos. + * + * @package SAMURAI + * @access public + */ +class SAMURAI_Perm { + /** + * Permisos. Es un array asociativo, donde la clave es un identificador de sistema y el valor un array con los permisos que tiene para ese sistema. + * + * @var array $permisos + * @access protected + */ + var $_permisos = array(); + + /** + * Sistema usado actualmente. + * + * @var int $sistema + * @access protected + */ + var $_sistema; + + /** + * Sets Sistema. + * + * @param int $sistema Sistema. + * + * @return void + * @access public + */ + function setSistema($sistema) + { + $this->_sistema = $sistema; + } + + // ~X2C + + // +X2C Operation 380 + /** + * Constructor. + * + * @param int $login Login del usuario para el cual obtener los permisos. + * @param int $sistema Sistema con el cual se va a trabajar. + * @param DB &$db Base de datos a usar. + * + * @return void + * @access public + */ + function SAMURAI_Perm($login, $sistema, &$db) // ~X2C + { + $this->_sistema = $sistema; + $query = ' + SELECT DISTINCT psu.id_sistema AS sistema, pps.id_permiso AS permiso + FROM samurai.perfil_sist_usuario AS psu, samurai.perm_perfil_sist AS pps + WHERE psu.login = '.$db->quote($login).' AND psu.id_perfil = pps.id_perfil;'; + foreach ($db->getAll($query, DB_FETCHMODE_ASSOC) as $row) { + $this->_permisos[$row['sistema']][] = $row['permiso']; + } + } + // -X2C + + // +X2C Operation 381 + /** + * Verifica si tiene un permiso. Se puede pasar par?etros variables, por ejemplo: $perm->tiene(1, 4, 9, 12); Si tiene algn permiso devuelve true. Si no se pasa ningn p?ametro ($perm->tiene()), devuelve true si tiene un permiso (al menos uno) en el sistema actual. + * + * @return bool + * @access public + */ + function tiene() // ~X2C + { + $args = func_get_args(); + if (!$args) { + return (boolean) @$this->_permisos[$this->_sistema]; + } else { + foreach ($args as $arg) { + if (is_array($arg)) { + if (array_intersect($arg, @$this->_permisos[$this->_sistema])) { + return true; + } + } else { + if (in_array($arg, @$this->_permisos[$this->_sistema])) { + return true; + } + } + } + return false; + } + } + // -X2C + + + // +X2C Operation 385 + /** + * Obtiene una lista de permisos. Si se especifica un sistema, obtiene la lista de permisos para ese sistema. + * + * @param int $sistema Sistema del cual obtener la lista de permisos. + * + * @return array + * @access public + */ + function getPermisos($sistema = '') // ~X2C + { + $sistema = $sistema ? $sistema : $this->_sistema; + return @$this->_permisos[$sistema] ? $this->_permisos[$sistema] : array(); + } + // -X2C + +} // -X2C Class :SAMURAI_Perm + +?> \ No newline at end of file