2 // vim: set binary expandtab tabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // | Ministerio de EconomÃa |
6 // +--------------------------------------------------------------------+
7 // | This file is part of SAMURAI. |
9 // | SAMURAI is free software; you can redistribute it and/or modify |
10 // | it under the terms of the GNU General Public License as published |
11 // | by the Free Software Foundation; either version 2 of the License, |
12 // | or (at your option) any later version. |
14 // | SAMURAI is distributed in the hope that it will be useful, but |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 // | General Public License for more details. |
19 // | You should have received a copy of the GNU General Public License |
20 // | along with SAMURAI; if not, write to the Free Software Foundation, |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
22 // +--------------------------------------------------------------------+
23 // | Creado: Fri Jul 18 16:05:22 2003 |
24 // | Autor: Leandro Lucarella <llucar@mecon.gov.ar> |
25 // +--------------------------------------------------------------------+
30 // +X2C Class 377 :SAMURAI_Perm
32 * Chequeador de permisos.
39 * 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.
41 * @var array $permisos
44 var $_permisos = array();
47 * Sistema usado actualmente.
57 * @param int $sistema Sistema.
62 function setSistema($sistema)
64 $this->_sistema = $sistema;
73 * @param int $login Login del usuario para el cual obtener los permisos.
74 * @param int $sistema Sistema con el cual se va a trabajar.
75 * @param DB &$db Base de datos a usar.
80 function SAMURAI_Perm($login, $sistema, &$db) // ~X2C
82 $this->_sistema = $sistema;
84 SELECT DISTINCT psu.id_sistema AS sistema, pps.id_permiso AS permiso
85 FROM samurai.perfil_sist_usuario AS psu, samurai.perm_perfil_sist AS pps
86 WHERE psu.login = '.$db->quote($login).' AND psu.id_perfil = pps.id_perfil;';
87 foreach ($db->getAll($query, DB_FETCHMODE_ASSOC) as $row) {
88 $this->_permisos[$row['sistema']][] = $row['permiso'];
95 * 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.
100 function tiene() // ~X2C
102 $args = func_get_args();
104 return (boolean) @$this->_permisos[$this->_sistema];
106 foreach ($args as $arg) {
107 if (is_array($arg)) {
108 if (array_intersect($arg, @$this->_permisos[$this->_sistema])) {
112 if (in_array($arg, @$this->_permisos[$this->_sistema])) {
123 // +X2C Operation 385
125 * Obtiene una lista de permisos. Si se especifica un sistema, obtiene la lista de permisos para ese sistema.
127 * @param int $sistema Sistema del cual obtener la lista de permisos.
132 function getPermisos($sistema = '') // ~X2C
134 $sistema = $sistema ? $sistema : $this->_sistema;
135 return @$this->_permisos[$sistema] ? $this->_permisos[$sistema] : array();
139 } // -X2C Class :SAMURAI_Perm