Plataforma de código abierto para gobierno electrónico.Administración electrónica.
        Open Source Plattform for e-government.

"El software libre construye una sociedad mejor" (Richard Stallman)


4.1 Seguridad


Introducción



Open Populi Application Framework consta de una estructura propia en cuanto a seguridad y control de acceso, que se integra directamente en todas las aplicaciones desarrolladas bajo la plataforma. Una vez instalado Open Populi Application Framework (ver: Instalación) , encontraremos que la plataforma modelo contiene una aplicación llamada security. Dicha aplicación provee lo necesario para la validación de los usuarios que desean acceder a las aplicaciones de una plataforma, cuyas acciones así lo requieran. Está planificado para la siguiente versión extender las funcionalidades y módulos de la aplicación Security de manera que se pueda gestionar íntegramente todo lo que se refiere a la administración de usuarios, perfiles y permisos de accesos, ademas de aplicaciones, módulos y acciones que forman parte de una plataforma.

Estructura



La estructura de seguridad y control de acceso es gestionada por la clase OP_Acl. Esta clase se encarga de revisar cuestiones tales como si una aplicación, módulo o acción existen, o sea determina si el usuario está accediendo a una URL valida. Y además brinda la información necesaria para armar un menú con todas las acciones disponibles a un usuario en particular.
La aplicación de seguridad de Open Populi Application Framework trabaja con la siguiente estructura:

  • Diagama Entidad Relación de la estructura de seguridad:



applications

Modela las aplicaciones que forman parte de la plataforma.

modules

Modela los modulos, relacionados con la aplicación a la que pertenecen, que forman parte de la plataforma.

actions

Modela las acciones, relacionadas con el modulo al que pertenecen, que forman parte de la plataforma.

users

Modela los usuarios que forman parte de la plataforma

profiles

Modela los diferentes perfiles de usuarios para acceder a aplicaciones de una plataforma.

actions_profiles

Modela las acciones que pertenecen a un determinado perfil de usuario.

users_actions

Modela las acciones que pertenecen a un determinado usuario. Aquí es donde a un usuario se le puede otorgar acceso a una acción a la que el perfil no tiene permiso de acceso o bien quitar tal permiso a la que el perfil tiene acceso.



Menú de Acceso de una Plataforma




Como hemos comentado en la sección anterior, la aplicación de Security es gestionada por la clase OP_Acl. Está clase provee un método que determina las acciones a las cuales puede acceder un usuario autenticado en la plataforma. Esto se realiza de la siguiente manera:


class accessComponents extends OP_Components{
public function menu(){
$menu = OP_Context::getInstance()->getAcl()->getAvailables();

$this->data = array('menu'=>$menu);
}
}


El método getAvailables() retorna el array estructurado de la siguiente manera:

  • Ejemplo array que retorna getAvailables
array(
'info' => array(
'blog' => array(
'index',
'add',
'edit'
'delete'),
'new' => array(
'index',
'add',
'edit',
'delete)
),
'backend' => array(
'customer' => array(
'index',
'add',
'edit'
'delete')
)
)

Luego, se deberá crear un plantilla de vista para el componente, para lo cual utilizaremos la convención para nombrar a partials, es decir _miComponente.tpl.php y se incluirá en el directorio templates del modulo donde este creado la clase compononents.class.php correspondiente. Bien, entonces, para el caso del componente menú lo llamaremos _menu.tpl.php.

Para que todo funcione correctamente se deberá incluir el menú en el layout de la plataforma correspondiente, de la siguiente manera:

<html>
<head>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

<title><?php echo includeTitle($op_response) ?></title>

<?php echo includeCss($op_response) ?>
<?php echo includeJs($op_response) ?>

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
</head>
<body>

<div id="header">
<img id="logo" src="/miPlataforma/templates/img/logo300x60.gif" alt="Logotipo de Open Populi" />
<div class="clear-both"></div>
</div>

'''<div id="menu">
<?php if($op_context->getUser()->isAuthenticated()):?>
<?php includeSlotComponent('menu', $op_view) ?>
<?php endif; ?>
</div>'''

<?php if($op_context->getSession()->isset_flash('error')): ?>
<div class="plataforma">
<div id="message" class="aviso-rojo"><?php echo $op_context->getSession()->flash('error') ?></div>
</div>
<?php elseif($op_context->getSession()->isset_flash('notice')): ?>
<? //El mensaje desaparecera pasado 3 segundos ?>
<?= onReadyBind("$('#message').fadeIn('slow').animate({opacity: 1.0}, 3000).fadeOut('slow', function() { $(this).remove();});"); ?>
<div id="message" class="plataforma">
<div class="aviso-verde"><?php echo $op_context->getSession()->flash('notice') ?></div>
</div>
<?php endif; ?>

<?php echo $op_content ?>

</body>
</html>


««« Herramientas y Funcionalidades | Logs y Auditoría »»»



Indice del manual