Author: ftoledo Date: 2009-05-05 03:39:29 -0300 (Tue, 05 May 2009) New Revision: 6161 Modified: prosistem/alba/trunk/alba/apps/principal/lib/albaUser.class.php prosistem/alba/trunk/alba/apps/principal/modules/default/actions/actions.class.php prosistem/alba/trunk/alba/apps/principal/modules/default/templates/indexSuccess.php prosistem/alba/trunk/alba/apps/principal/modules/rol/actions/actions.class.php prosistem/alba/trunk/alba/apps/principal/modules/rol/templates/editPermisoSuccess.php prosistem/alba/trunk/alba/apps/principal/modules/seguridad/actions/actions.class.php prosistem/alba/trunk/alba/apps/principal/modules/usuario/actions/actions.class.php prosistem/alba/trunk/alba/apps/principal/modules/usuario/templates/editPermisoSuccess.php prosistem/alba/trunk/alba/data/fixtures/00_datos_desde_cero.yml Log: mejora en los permisos de los fixtures fix varios en albaUser mejora en los modulos de usuario y rol para la nueva arquitectura de permisos Modified: prosistem/alba/trunk/alba/apps/principal/lib/albaUser.class.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/lib/albaUser.class.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/lib/albaUser.class.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -1,31 +1,121 @@ <?php +/** + * This file is part of Alba. + * + * Alba is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Alba is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Alba; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/** + * Clase albaUser + * Maneja la autenticacion del usuario + * + * @package alba + * @author José Luis Di Biase <[email protected]> + * @author Héctor Sanchez <[email protected]> + * @author Fernando Toledo <[email protected]> + * @version SVN: $Id$ + * @filesource + * @license GPL + */ + class albaUser extends sfBasicSecurityUser { + /** + * deuelve el establecimento del usuario + * @return array $establecimientos + * @todo: tienen que ser varios! + */ public function getEstablecimientos() { - - $establecimientos = array(); - $e = EstablecimientoPeer::retrieveByPk($this->getAttribute('fk_establecimiento_id')); - array_push($establecimientos,$e); - return $establecimientos; - - - + $establecimientos = array(); + $e = EstablecimientoPeer::retrieveByPk($this->getAttribute('fk_establecimiento_id')); + array_push($establecimientos,$e); + return $establecimientos; } /** - * obtiene el tema del la interfaz del usuario - */ + * obtiene el tema del la interfaz del usuario + */ public function getTheme() { - return $this->getAttribute('theme'); + return $this->getAttribute('theme'); } /** - * Asigna un tema al usuario - */ + * Asigna un tema al usuario + */ public function setTheme($theme) { - $this->setAttribute('theme',$theme); + $this->setAttribute('theme',$theme); } + + /** + * Carga las credenciales del usuario + * en la session del usuario + * + * @param integer $usuario_id identificador del usuario a cargar + * en la session + */ + public function cargarCredenciales($usuario_id) + { + //limpio las credenciales actuales si las hay + $this->clearCredentials(); + + /* asigno las credenciales x rol */ + $crol = new Criteria(); + $crol->add(UsuarioRolPeer::FK_USUARIO_ID, $usuario_id); + $roles = UsuarioRolPeer::doSelect($crol); + $user_roles = array(); + //por cada rol los cargo y tambien busco los permisos y los asigno + foreach ($roles as $rol) { + $user_rol['id'] = $rol->getRol()->getId(); + $user_rol['nombre'] = $rol->getRol(); + array_push($user_roles, $user_rol); + $this->log('obteniendo rol: ' . $rol->getRol()->getNombre()); + $permisos = $rol->getRol()->getRolPermisos(); + foreach ($permisos as $permiso) { + $this->log(sprintf('permiso desde rol: %s', $permiso->getPermiso())); + $this->addCredential($permiso->getPermiso()->getNombre()); + } + } + $this->setAttribute('roles', $user_roles); + /* asign credenciales por usuario */ + $this->log('obteniendo permisos x usuario:'); + $cuser = new Criteria(); + $cuser->add(UsuarioPermisoPeer::FK_USUARIO_ID, $usuario_id); + $permisos = UsuarioPermisoPeer::doSelect($cuser); + foreach ($permisos as $permiso) { + $this->log('permiso desde usuario: ' . $permiso->getPermiso()); + $this->addCredential($permiso->getPermiso()->getNombre()); + } + + // quitando credenciales para la demo + if(sfConfig::get('sf_environment') =='demo'){ + $this->log('{DEMO} quitando credenciales'); + $this->removeCredential('usuario'); + $this->removeCredential('rol'); + } + + } + + /*** + * Log para debug + * + * @param string $msg texto + */ + private function log($msg) + { + sfContext::getInstance()->getLogger()->debug($msg); + } } -?> \ No newline at end of file +?> Modified: prosistem/alba/trunk/alba/apps/principal/modules/default/actions/actions.class.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/default/actions/actions.class.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/default/actions/actions.class.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -13,7 +13,11 @@ public function executeIndex(sfWebRequest $request) { } + public function executeLogin(sfWebRequest $request) + { + } + public function executeSecure(sfWebRequest $request) + { + } - public function executeLogin($request) { - } } Modified: prosistem/alba/trunk/alba/apps/principal/modules/default/templates/indexSuccess.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/default/templates/indexSuccess.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/default/templates/indexSuccess.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -1,98 +1,105 @@ <?php if ($sf_user->isAuthenticated()): ?> -<div align="center"> -<h1>¡Bienvenidos al Sistema Libre de Gestión Educativa ALBA!</h1> -<h3>Versión <?php echo link_to(sfConfig::get("app_alba_version"),"http://www.proyectoalba.com.ar/",array('title'=> 'Comprobar Versión...')) ?><h3> -</div> -<br/> -<div align="center"> -El Proyecto Alba, es un proyecto de desarrollo de Software para la realización de un<br><b>"Sistema Libre de Gestión Educativa"</b> -</div> -<br> -<br> -<table align="center"> - <tr> - <td> - <?php echo image_tag("gnu-head-banner.png");?> - </td> - <td> - - </td> - <td> - Éste aplicativo es <b><a href="http://es.wikipedia.org/wiki/Software_Libre">Software Libre</a></b>, de acuerdo con tal definición, el software es <b>"libre"</b> si garantiza las siguientes libertades: - <ul> - <li><b>"libertad 0"</b>, ejecutar el programa con cualquier propósito (privado, educativo, público, comercial, etc.)</li> - <li><b>"libertad 1"</b>, estudiar y modificar el programa (para lo cual es necesario poder acceder al código fuente)</li> - <li><b>"libertad 2"</b>, copiar el programa de manera que se pueda ayudar al vecino o a cualquiera</li> - <li><b>"libertad 3"</b>, mejorar el programa, y hacer públicas las mejoras, de forma que se beneficie toda la comunidad.</li> - </ul> - </td> - </tr> -</table> + <div align="center"> + <h1>¡Bienvenidos al Sistema Libre de Gestión Educativa ALBA!</h1> + <h3>Versión <?php echo link_to(sfConfig::get("app_alba_version"),"http://www.proyectoalba.com.ar/",array('title'=> 'Comprobar Versión...')) ?><h3> + </div> + <br/> + <div align="center"> + El Proyecto Alba, es un proyecto de desarrollo de Software para la realización de un<br><b>"Sistema Libre de Gestión Educativa"</b> + </div> + <br> + <br> + <table align="center"> + <tr> + <td> + <?php echo image_tag("gnu-head-banner.png");?> + </td> + <td> + + </td> + <td> + Éste aplicativo es <b><a href="http://es.wikipedia.org/wiki/Software_Libre">Software Libre</a></b>, de acuerdo con tal definición, el software es <b>"libre"</b> si garantiza las siguientes libertades: + <ul> + <li><b>"libertad 0"</b>, ejecutar el programa con cualquier propósito (privado, educativo, público, comercial, etc.)</li> + <li><b>"libertad 1"</b>, estudiar y modificar el programa (para lo cual es necesario poder acceder al código fuente)</li> + <li><b>"libertad 2"</b>, copiar el programa de manera que se pueda ayudar al vecino o a cualquiera</li> + <li><b>"libertad 3"</b>, mejorar el programa, y hacer públicas las mejoras, de forma que se beneficie toda la comunidad.</li> + </ul> + </td> + </tr> + </table> -<br> -<br> + <br> + <br> -<table align="center"> - <tr> - <td> - <?php echo image_tag("bug.jpg");?> - </td> - <td> - - </td> - <td> - Como está en continuo desarrollo, puede encontrar errores que todavía no han sido descubiertos. <br> - Si encuentra alguno, por favor repórtelo en nuestro sitio de seguimientos de errores: <b><a target="_blank" href="http://alba.pressenter.com.ar">http://alba.pressenter.com.ar</a></b> - <br/> - </td> - </tr> + <table align="center"> + <tr> + <td> + <?php echo image_tag("bug.jpg");?> + </td> + <td> + + </td> + <td> + Como está en continuo desarrollo, puede encontrar errores que todavía no han sido descubiertos. <br> + Si encuentra alguno, por favor repórtelo en nuestro sitio de seguimientos de errores: <b><a target="_blank" href="http://alba.pressenter.com.ar">http://alba.pressenter.com.ar</a></b> + <br/> + </td> + </tr> - <tr> - <td> + <tr> + <td> - </td> - <td> - - </td> - <td> - <i>Para más información visite el Sitio Web del Proyecto Alba. <b><a href="http://www.proyectoalba.com.ar">Página Web del Proyecto.</a></b></i> - </td> - </tr> + </td> + <td> + + </td> + <td> + <i>Para más información visite el Sitio Web del Proyecto Alba. <b><a href="http://www.proyectoalba.com.ar">Página Web del Proyecto.</a></b></i> + </td> + </tr> -</table> - <?php if (sfConfig::get('sf_debug')):?> - <ul> - <li>Información del Sistema - <ul> - <li>PHP: <?php echo phpversion()?></li> - </ul> - </li> - <li>Permisos: - <ul> - <?php foreach ($sf_user->listCredentials() as $permiso):?> - <li><?php echo $permiso?></li> - <?php endforeach;?> - </ul> - </li> - <li>Establecimientos: - <ul> - <?php $establecimientos = $sf_user->getEstablecimientos()?> - <?php foreach ($establecimientos as $establecimiento): ?> - <li><?php echo $establecimiento?></li> - <?php endforeach; ?> - </ul> - </li> - <li>Organización - <ul> - <?php echo "[" .$sf_user->getAttribute('fk_organizacion_id'). "] " . $sf_user->getAttribute('organizacion_nombre')?> - </ul> - </li> - <li>Tema (interfaz): - <ul> - <?php echo $sf_user->getTheme()?> - </ul> - </li> - </ul> - <?php endif;?> + </table> + <?php if (sfConfig::get('sf_debug')):?> + <ul> + <li>Información del Sistema + <ul> + <li>PHP: <?php echo phpversion()?></li> + </ul> + </li> + <li>Roles: + <ul> + <?php foreach ($sf_user->getAttribute('roles') as $rol):?> + <li><?php printf("[%d] %s",$rol['id'],$rol['nombre'])?></li> + <?php endforeach;?> + </ul> + </li> + <li>Permisos efectivos: + <ul> + <?php foreach ($sf_user->listCredentials() as $permiso):?> + <li><?php echo $permiso?></li> + <?php endforeach;?> + </ul> + </li> + <li>Establecimientos: + <ul> + <?php $establecimientos = $sf_user->getEstablecimientos()?> + <?php foreach ($establecimientos as $establecimiento): ?> + <li><?php echo $establecimiento?></li> + <?php endforeach; ?> + </ul> + </li> + <li>Organización + <ul> + <?php echo "[" .$sf_user->getAttribute('fk_organizacion_id'). "] " . $sf_user->getAttribute('organizacion_nombre')?> + </ul> + </li> + <li>Tema (interfaz): + <ul> + <?php echo $sf_user->getTheme()?> + </ul> + </li> + </ul> + <?php endif;?> <?php endif; ?> Modified: prosistem/alba/trunk/alba/apps/principal/modules/rol/actions/actions.class.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/rol/actions/actions.class.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/rol/actions/actions.class.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -2,7 +2,7 @@ /** * This file is part of Alba. - * + * * Alba is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -37,13 +37,18 @@ function executeEditPermiso() { // estos son los permisos que tiene el rol $c = new Criteria(); - $c->add(RelRolPermisoPeer::FK_ROL_ID, $this->getRequestParameter('id')); - $rolPermisos = RelRolPermisoPeer::doSelectJoinPermiso($c); - - // esto puede ser descartado usando en el select_tag, objects_for_select + $c->add(RolPermisoPeer::FK_ROL_ID, $this->getRequestParameter('id')); + $c->addAscendingOrderByColumn(PermisoPeer::NOMBRE); + $rolPermisos = RolPermisoPeer::doSelectJoinPermiso($c); + + // esto puede ser descartado usando en el select_tag, objects_for_select $optionsRolPermisos = array(); foreach($rolPermisos as $rolPermiso) { - $optionsRolPermisos[$rolPermiso->getFkPermisoId()] = $rolPermiso->getPermiso()->getNombre(); + $optionsRolPermisos[$rolPermiso->getFkPermisoId()] = + sprintf("%s (%s)", + $rolPermiso->getPermiso()->getNombre(), + $rolPermiso->getPermiso()->getDescripcion() + ); } //estos son todos los permisos existentes @@ -52,53 +57,48 @@ foreach($permisos as $permiso) { $todosLosPermisos[$permiso->getId()] = $permiso->getNombre(); } - + // estos son los permisos existentes menos los del usuario $this->optionsPermisos = array_diff_key($todosLosPermisos, $optionsRolPermisos); - + $c = new Criteria(); - //$c->clearSelectColumns()->addSelectColumn(RolPeer::NOMBRE); - //$c->addSelectColumn(RolPeer::ID); - $c->add(RolPeer::ACTIVO, 1); $roles = RolPeer::doSelect($c); $optionsRol = array(); foreach($roles as $rol) { - $optionsRol[$rol->getId()] = $rol->getNombre(); + $optionsRol[$rol->getId()] = $rol->getNombre(); } $this->optionsRol = $optionsRol; $this->optionsRolPermisos = $optionsRolPermisos; - } - + } + function executeSavePermiso() { - + // borrar todo los permisos para un usuarios determinado $rolId = $this->getRequestParameter('id'); $aPermiso = $this->getRequest()->getParameterHolder()->get('rolPermisos'); $c = new Criteria(); - $c->add(RelRolPermisoPeer::FK_ROL_ID, $rolId); - RelRolPermisoPeer::doDelete($c); + $c->add(RolPermisoPeer::FK_ROL_ID, $rolId); + RolPermisoPeer::doDelete($c); if(count($aPermiso) > 0) { // grabar todos los que vienen seleccionados // aqui se debe poder grabar haciendo un solo insert - + $c = new Criteria(); foreach($aPermiso as $permisoId) { - $p = new RelRolPermiso(); + $p = new RolPermiso(); $p->setFkRolId($rolId); $p->setFkPermisoId($permisoId); $p->save(); unset($p); } } + $this->getUser()->setFlash('notice', 'Los permisos para este Rol fueron actualizados correctamente.'); return $this->redirect('rol/editPermiso?id='.$rolId); - - } - - + } } ?> Modified: prosistem/alba/trunk/alba/apps/principal/modules/rol/templates/editPermisoSuccess.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/rol/templates/editPermisoSuccess.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/rol/templates/editPermisoSuccess.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -1,16 +1,17 @@ - - <script> - function linkTo() { - var obj = document.getElementById('id'); - location.href = "<?php echo url_for('rol/editPermiso', false);?>/id/"+obj.options[obj.selectedIndex].value; - } - </script> +<script> + function linkTo() { + var obj = document.getElementById('id'); + location.href = "<?php echo url_for('rol/editPermiso', false);?>/id/"+obj.options[obj.selectedIndex].value; + } +</script> <div id="sf_admin_container"> + <?php include_partial('global/flashes')?> + <div id="sf_admin_content"> <h1>Permisos por Roles</h1> <br> <?php echo form_tag('rol/savePermiso', 'onSubmit="selectItem()"')?> Rol: <?php echo select_tag('id', options_for_select($optionsRol, $sf_params->get('id')), 'onChange=linkTo()'); ?><br> <br> - <?php + <?php echo select_tag('permisos', options_for_select($optionsPermisos), 'multiple=multiple id="fromBox"'); echo select_tag('rolPermisos[]', options_for_select($optionsRolPermisos), 'multiple=multiple id="toBox"'); // echo select_tag('rolPermisos[]', objects_for_select($optionsRolPermisos,'getFkPermisoId','getPermiso()->getNombre',''), 'multiple=multiple id="toBox"'); @@ -20,8 +21,8 @@ <li><?php echo button_to('Listado de Roles','rol/list',array('class'=>'sf_admin_action_list'))?></li> </ul> </form> - - <script type="text/javascript"> - createMovableOptions("fromBox","toBox",500,300,'Permisos Disponibles','Permisos Seleccionados'); - </script> + </div> </div> +<script type="text/javascript"> +createMovableOptions("fromBox","toBox",500,300,'Permisos Disponibles','Permisos Seleccionados'); +</script> Modified: prosistem/alba/trunk/alba/apps/principal/modules/seguridad/actions/actions.class.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/seguridad/actions/actions.class.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/seguridad/actions/actions.class.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -77,41 +77,10 @@ $this->getUser()->setAttribute('usuario',$user->getUsuario()); $this->getUser()->setCulture('es_AR'); - /* asigno las credenciales x rol*/ - $crol = new Criteria(); - $crol->add(UsuarioRolPeer::FK_USUARIO_ID, $user->getId()); - $roles = UsuarioRolPeer::doSelect($crol); + //cargo las credenciales del usuario ylos roles + $this->getUser()->cargarCredenciales($user->getId()); - //por cada rol busco los permisos y los asigno - foreach ($roles as $rol) { - - $this->logMessage(' obteniendo rol: ' . $rol->getRol()->getNombre(), 'debug'); - $permisos = $rol->getRol()->getRolPermisos(); - foreach ($permisos as $permiso) { - $this->logMessage(sprintf('permiso desde rol: %s', $permiso->getPermiso()),'debug'); - $this->getUser()->addCredential($permiso->getPermiso()->getNombre()); - } - } - - /* asign credenciales por usuario */ - $this->logMessage('obteniendo permisos x usuario:', 'debug'); - $cuser = new Criteria(); - $cuser->add(UsuarioPermisoPeer::FK_USUARIO_ID, $user->getId()); - $permisos = UsuarioPermisoPeer::doSelect($cuser); - foreach ($permisos as $permiso) { - $this->logMessage('permiso desde usuario: ' . $permiso->getPermiso(),'debug'); - $this->getUser()->addCredential($permiso->getPermiso()->getNombre()); - } - - // quitando credenciales para la demo - if(sfConfig::get('sf_environment') =='demo'){ - $this->logMessage('{DEMO} quitando credenciales'); - $this->getUser()->removeCredential('usuario'); - $this->getUser()->removeCredential('permiso'); - $this->getUser()->removeCredential('modulo'); - $this->getUser()->removeCredential('rol'); - } - $this->debugMessage('Login ok'); + $this->logMessage('Login ok','debug'); return $this->redirect($this->getRequestParameter('referer', '@homepage')); } else { @@ -121,7 +90,7 @@ } else { - $this->debugMessage('Login Error'); + $this->logMessage('Login Error','debug'); $this->error_inicio_sesion = true; return sfView::SUCCESS; } @@ -134,7 +103,7 @@ /* cierre de session */ public function executeLogout() { - $this->debugMessage("Logout"); + $this->logMessage("Logout", 'debug'); $this->getUser()->clearCredentials(); $this->getUser()->setAuthenticated(false); $this->redirect('default/index'); @@ -190,7 +159,7 @@ /* capturo el error de login */ public function handleErrorLogin() { - $this->debugMessage("Error inicio de sesion"); + $this->logMessage("Error inicio de sesion", 'debug'); $this->error_inicio_sesion = true; return sfView::SUCCESS; } Modified: prosistem/alba/trunk/alba/apps/principal/modules/usuario/actions/actions.class.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/usuario/actions/actions.class.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/usuario/actions/actions.class.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -2,7 +2,7 @@ /** * This file is part of Alba. - * + * * Alba is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -33,63 +33,63 @@ class usuarioActions extends autousuarioActions { - - function updateUsuarioFromRequest() { - $usuario = $this->getRequestParameter('usuario'); - - if (isset($usuario['usuario'])) { - $this->usuario->setUsuario($usuario['usuario']); - } - - if (isset($usuario['clave']) && $usuario['clave'] != '') { - $this->usuario->setClave(md5($usuario['clave'])); - } - - if (isset($usuario['correo_publico'])) { + + function updateUsuarioFromRequest() { + $usuario = $this->getRequestParameter('usuario'); + + if (isset($usuario['usuario'])) { + $this->usuario->setUsuario($usuario['usuario']); + } + + if (isset($usuario['clave']) && $usuario['clave'] != '') { + $this->usuario->setClave(md5($usuario['clave'])); + } + + if (isset($usuario['correo_publico'])) { $this->usuario->setCorreoPublico(isset($usuario['correo_publico']) ? $usuario['correo_publico'] : 0); - } - - if (isset($usuario['email'])) { + } + + if (isset($usuario['email'])) { $this->usuario->setEmail($usuario['email']); - } - - if (isset($usuario['activo'])) { - $this->usuario->setActivo(isset($usuario['activo']) ? $usuario['activo'] : 0); - } - - if ($this->usuario->isNew()) { - $this->usuario->setFechaCreado(date("Y-m-d")); - } + } - $this->usuario->setFechaActualizado(date("Y-m-d H:i:s")); + if (isset($usuario['activo'])) { + $this->usuario->setActivo(isset($usuario['activo']) ? $usuario['activo'] : 0); + } - if (isset($usuario['seguridad_pregunta'])) { - $this->usuario->setSeguridadPregunta($usuario['seguridad_pregunta']); - } - - if (isset($usuario['seguridad_respuesta'])) { - $this->usuario->setSeguridadRespuesta($usuario['seguridad_respuesta']); - } - - if (isset($usuario['fk_establecimiento_id'])) { - $this->usuario->setFkEstablecimientoId($usuario['fk_establecimiento_id']); - } - } - - + if ($this->usuario->isNew()) { + $this->usuario->setFechaCreado(date("Y-m-d")); + } + + $this->usuario->setFechaActualizado(date("Y-m-d H:i:s")); + + if (isset($usuario['seguridad_pregunta'])) { + $this->usuario->setSeguridadPregunta($usuario['seguridad_pregunta']); + } + + if (isset($usuario['seguridad_respuesta'])) { + $this->usuario->setSeguridadRespuesta($usuario['seguridad_respuesta']); + } + + if (isset($usuario['fk_establecimiento_id'])) { + $this->usuario->setFkEstablecimientoId($usuario['fk_establecimiento_id']); + } + } + + public function executeDelete($request) { $this->usuario = UsuarioPeer::retrieveByPk($this->getRequestParameter('id')); $this->forward404Unless($this->usuario); - $this->usuario->setBorrado(1); - $this->usuario->save(); + $this->usuario->setBorrado(1); + $this->usuario->save(); return $this->redirect('usuario/list'); } - - + + public function executeList($request) { $this->processSort(); $this->processFilters(); - $this->filters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/usuario/filters'); + $this->filters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/usuario/filters'); // pager $this->pager = new sfPropelPager('Usuario', 20); $c = new Criteria(); @@ -103,61 +103,58 @@ $this->pager->setPage($this->getRequestParameter('page', 1)); $this->pager->init(); } - - + /** + * Modificar los roles y permisos del usuario + */ function executeEditPermiso($request) { - + + $this->usuario = UsuarioPeer::retrieveByPk($this->getRequestParameter('id')); + $this->forward404Unless($this->usuario); + // estos son los permisos que tiene el usuario $c = new Criteria(); - $c->add(RelUsuarioPermisoPeer::FK_USUARIO_ID, $this->getRequestParameter('id')); - $usuarioPermisos = RelUsuarioPermisoPeer::doSelectJoinPermiso($c); + $c->add(UsuarioPermisoPeer::FK_USUARIO_ID, $this->usuario->getId()); + $usuarioPermisos = UsuarioPermisoPeer::doSelectJoinPermiso($c); $optionsUsuarioPermisos = array(); foreach($usuarioPermisos as $usuarioPermiso) { $optionsUsuarioPermisos[$usuarioPermiso->getFkPermisoId()] = $usuarioPermiso->getPermiso()->getNombre(); } $this->optionsUsuarioPermisos = $optionsUsuarioPermisos; - // estos son todos los permisos existentes $todosLosPermisos = array(); - if($this->getRequestParameter('rolId')) { - // permisos por rol - $c = new Criteria(); - $c->add(RelRolPermisoPeer::FK_ROL_ID, $this->getRequestParameter('rolId')); - $rolPermisos = RelRolPermisoPeer::doSelectJoinPermiso($c); - foreach($rolPermisos as $rolPermiso) { - $todosLosPermisos[$rolPermiso->getFkPermisoId()] = $rolPermiso->getPermiso()->getNombre(); - } - } else { - // permisos - $permisos = PermisoPeer::doSelect(new Criteria()); - foreach($permisos as $permiso) { - $todosLosPermisos[$permiso->getId()] = $permiso->getNombre(); - } + $c = new Criteria(); + // permisos + $permisos = PermisoPeer::doSelect(new Criteria()); + foreach($permisos as $permiso) { + $todosLosPermisos[$permiso->getId()] = $permiso->getNombre(); + } - } - // estos son los permisos existentes menos los del usuario - $this->optionsPermisos = array_diff_key($todosLosPermisos, $this->optionsUsuarioPermisos); - - + $this->optionsPermisos = array_diff_key($todosLosPermisos, $this->optionsUsuarioPermisos); + + //cargo todos roles $c = new Criteria(); - //$c->clearSelectColumns()->addSelectColumn(RolPeer::NOMBRE); - //$c->addSelectColumn(RolPeer::ID); $c->add(RolPeer::ACTIVO, 1); - $roles = RolPeer::doSelect($c); - - $optionsRol = array( '' => 'Todos'); // muy feo + $roles = RolPeer::doSelect($c); + + $optionsRol = array(); foreach($roles as $rol) { $optionsRol[$rol->getId()] = $rol->getNombre(); } $this->optionsRol = $optionsRol; - $this->usuario = UsuarioPeer::retrieveByPk($this->getRequestParameter('id')); + //cargo roles del usuario + $c = new Criteria(); + $c->add(UsuarioRolPeer::FK_USUARIO_ID, $this->usuario->getId()); + $this->usuarioroles = UsuarioRolPeer::doSelectJoinRol($c); } - + + /** + * Guarda los permisos del usuario + */ function executeSavePermiso($request) { // borrar todo los permisos para un usuarios determinado @@ -165,41 +162,86 @@ $aPermiso = $this->getRequest()->getParameterHolder()->get('usuarioPermisos'); $c = new Criteria(); - $c->add(RelUsuarioPermisoPeer::FK_USUARIO_ID, $usuarioId); - RelUsuarioPermisoPeer::doDelete($c); + $c->add(UsuarioPermisoPeer::FK_USUARIO_ID, $usuarioId); + UsuarioPermisoPeer::doDelete($c); - if(count($aPermiso) > 0) { // grabar todos los que vienen seleccionados // aqui se debe poder grabar haciendo un solo insert $c = new Criteria(); foreach($aPermiso as $permisoId) { - $p = new RelUsuarioPermiso(); + $p = new UsuarioPermiso(); $p->setFkUsuarioId($usuarioId); $p->setFkPermisoId($permisoId); $p->save(); unset($p); } - } - //si los permisos que se estan guardando son del + } + //si los permisos que se estan guardando son del //usuario actual refresco las credenciales para evitar el logout/login - $this->logMessage("{debug} Comprobar si el usuario es es actual: " . $this->getUser()->getAttribute('id')); + $this->logMessage("Comprobar si el usuario es el actual: " . $this->getUser()->getAttribute('id'), 'debug'); if ($this->getUser()->getAttribute('id') == $usuarioId) { - $this->logMessage("Modificando permisos del usuario actual"); - /* asigno las credenciales */ - $cperm = new Criteria(); - $cperm->add(RelUsuarioPermisoPeer::FK_USUARIO_ID, $usuarioId); - $usuarioPermisos = RelUsuarioPermisoPeer::doSelectJoinPermiso($cperm); - foreach ($usuarioPermisos as $usuarioPermiso) { - $this->getUser()->addCredential($usuarioPermiso->getPermiso()->getCredencial()); - $message = "{Credenciales} " . $usuarioPermiso->getPermiso()->getCredencial(); - $this->logMessage($message); - } - } + $this->logMessage("Modificando permisos del usuario actual", 'debug'); + $this->getUser()->cargarCredenciales($usuarioId); + } return $this->redirect('usuario/editPermiso?id='.$usuarioId); } - + + /** + * Asigna un rol al usuario + * + * @param integer $rol_id identificador del rol + * @param integer $usuario_id identificador del usuario + */ + public function executeSaveRol(sfWebRequest $request) + { + $this->usuario = UsuarioPeer::retrieveByPk($request->getParameter('usuario_id')); + $this->forward404Unless($this->usuario); + $this->rol = RolPeer::retrieveByPk($request->getParameter('rol_id')); + $this->forward404Unless($this->rol); + $ur = new UsuarioRol(); + $ur->setRol($this->rol); + $ur->setUsuario($this->usuario); + $ur->save(); + + //si el Rol que se estan guardando son del + //usuario actual refresco las credenciales para evitar el logout/login + $this->logMessage("Comprobar si el usuario es el actual: " . $this->getUser()->getAttribute('id'), 'debug'); + if ($this->getUser()->getAttribute('id') == $this->usuario->getId()) { + $this->logMessage("Modificando permisos del usuario actual", 'debug'); + $this->getUser()->cargarCredenciales($this->usuario->getId()); + } + return $this->redirect('usuario/editPermiso?id=' . $this->usuario->getId()); + } + + /** + * Elimina un rol del usuario + * + * @param integer $user_id identificador del usuari + * @param integer $rol_id identificador del rol + * + */ + public function executeDeleteRol(sfWebRequest $request) + { + $this->usuario = UsuarioPeer::retrieveByPk($request->getParameter('usuario_id')); + $this->forward404Unless($this->usuario); + $this->rol = RolPeer::retrieveByPk($request->getParameter('rol_id')); + $this->forward404Unless($this->rol); + $ur = new UsuarioRol(); + $ur->setRol($this->rol); + $ur->setUsuario($this->usuario); + $ur->delete(); + //si el Rol que se estan eliminando son del + //usuario actual refresco las credenciales para evitar el logout/login + $this->logMessage("Comprobar si el usuario es el actual: " . $this->getUser()->getAttribute('id'), 'debug'); + if ($this->getUser()->getAttribute('id') == $this->usuario->getId()) { + $this->logMessage("Modificando permisos del usuario actual", 'debug'); + $this->getUser()->cargarCredenciales($this->usuario->getId()); + } + return $this->redirect('usuario/editPermiso?id=' . $this->usuario->getId()); + + } } ?> Modified: prosistem/alba/trunk/alba/apps/principal/modules/usuario/templates/editPermisoSuccess.php =================================================================== --- prosistem/alba/trunk/alba/apps/principal/modules/usuario/templates/editPermisoSuccess.php 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/apps/principal/modules/usuario/templates/editPermisoSuccess.php 2009-05-05 06:39:29 UTC (rev 6161) @@ -1,27 +1,66 @@ <div id="sf_admin_container"> - <script> + <script> function linkTo() { var obj = document.getElementById('rolId'); location.href = "<?php echo url_for('usuario/editPermiso', false);?>/id/<?php echo $sf_params->get('id');?>/rolId/"+obj.options[obj.selectedIndex].value; } - </script> + </script> +<div id="sf_admin_content"> + <h1>Permisos del Usuario (<?php echo $usuario->getUsuario()?>)</h1> + <br/> + <h2>Roles:</h2> + <?php echo form_tag('usuario/saveRol')?> + <?php echo input_hidden_tag('usuario_id', $usuario->getId())?> + <p> + <?php if(count($usuarioroles)> 0):?> + <table class="sf_admin_list" cellspacing="0" style="width:40%"> + <thead> + <tr> + <th>Roles asignados:</th> + <th width="1%">Acciones</th> + </tr> + </thead> + <tfoot> + <th colspan="2"> </th> + </tfoot> + <?php $row = 0?> + <?php foreach ($usuarioroles as $rol):?> + <tr class="sf_admin_row_<?php echo $row?>"> + <td><?php echo $rol->getRol()?></td> + <td><?php echo link_to(image_tag('../sf/sf_admin/images/delete_icon.png',array('alt'=>'Eliminar rol', 'title'=>'Eliminar rol')),'usuario/deleteRol?usuario_id='.$usuario->getId().'&rol_id=' . $rol->getRol()->getId(),'confirm=Eliminar el rol del usuario?')?></td> + </tr> + <?php $row = ! $row;?> + <?php endforeach;?> -<h1>Permisos por Usuario (<?php echo $usuario->getUsuario()?>) </h1> -<br> -<?php echo form_tag('usuario/savePermiso', 'onSubmit="selectItem()"')?> -Rol: <?php echo select_tag('rolId', options_for_select($optionsRol, $sf_params->get('rolId')), 'onChange=linkTo()'); ?><br><br> -<?php - echo select_tag('permisos', options_for_select($optionsPermisos), 'multiple=multiple id="fromBox"'); - echo select_tag('usuarioPermisos[]', options_for_select($optionsUsuarioPermisos), 'multiple=multiple id="toBox"'); - echo input_hidden_tag('id', $sf_params->get('id')); -?> -<ul class="sf_admin_actions"> -<li><?php echo submit_tag('submit', 'class=sf_admin_action_save value=Grabar');?></li> -<li><?php echo button_to('Listado de usuarios','usuario/list',array('class'=>'sf_admin_action_list'))?></li> -</ul> -</form> -<script type="text/javascript"> -createMovableOptions("fromBox","toBox",500,300,'Permisos Disponibles','Permisos Seleccionados'); -</script> - -</div> \ No newline at end of file + </table> + <?php else:?> + <div class="error">No se ha asignado ningun Rol al usuario.</div> + <?php endif;?> + </p> + <br/> + <p> + Agregar el rol <?php echo select_tag('rol_id', options_for_select($optionsRol)) ?> + <?php echo submit_tag('Aceptar')?> + </p> + </form> + <br/> + <br/> + <h2>Permisos</h2> + <p> + <?php echo form_tag('usuario/savePermiso', 'onSubmit="selectItem()"')?> + <?php + echo select_tag('permisos', options_for_select($optionsPermisos), 'multiple=multiple id="fromBox"'); + echo select_tag('usuarioPermisos[]', options_for_select($optionsUsuarioPermisos), 'multiple=multiple id="toBox"'); + echo input_hidden_tag('id', $sf_params->get('id')); + ?> + <ul class="sf_admin_actions"> + <li><?php echo submit_tag('submit', 'class=sf_admin_action_save value=Grabar');?></li> + <li><?php echo button_to('Listado de usuarios','usuario/list',array('class'=>'sf_admin_action_list'))?></li> + </ul> + </form> + </p> + <script type="text/javascript"> + createMovableOptions("fromBox","toBox",500,300,'Permisos Disponibles','Permisos Seleccionados'); + </script> + </div> +</div> Modified: prosistem/alba/trunk/alba/data/fixtures/00_datos_desde_cero.yml =================================================================== --- prosistem/alba/trunk/alba/data/fixtures/00_datos_desde_cero.yml 2009-05-05 02:32:07 UTC (rev 6160) +++ prosistem/alba/trunk/alba/data/fixtures/00_datos_desde_cero.yml 2009-05-05 06:39:29 UTC (rev 6161) @@ -401,357 +401,333 @@ borrado: 0 Permiso: - Permiso_1: + Permiso_usuario: nombre: usuario descripcion: Modulo de usuario - Permiso_2: - nombre: permiso - descripcion: Administrar permisos de usuario - Permiso_3: - nombre: modulo - descripcion: Administración de módulos - Permiso_4: + Permiso_actividad: nombre: actividad descripcion: - Permiso_5: + Permiso_alumno: nombre: alumno descripcion: - Permiso_6: + Permiso_anio: nombre: anio descripcion: - Permiso_7: + Permiso_calendario: nombre: calendario descripcion: - Permiso_8: + Permiso_calendariovacunacion: nombre: calendariovacunacion descripcion: - Permiso_9: + Permiso_ciclolectivo: nombre: ciclolectivo descripcion: - Permiso_10: + Permiso_concepto: nombre: concepto descripcion: - Permiso_11: - nombre: creditos - descripcion: - Permiso_12: + Permiso_cuenta: nombre: cuenta descripcion: - Permiso_13: + Permiso_division: nombre: division descripcion: - Permiso_14: + Permiso_docente: nombre: docente descripcion: - Permiso_15: - nombre: docenteHorario + Permiso_docentehorario: + nombre: docentehorario descripcion: - Permiso_16: + Permiso_escalanota: nombre: escalanota descripcion: - Permiso_17: + Permiso_establecimiento: nombre: establecimiento descripcion: - Permiso_18: + Permiso_feriado: nombre: feriado descripcion: - Permiso_19: + Permiso_legajocategoria: nombre: legajocategoria descripcion: - Permiso_20: + Permiso_locacion: nombre: locacion descripcion: - Permiso_21: + Permiso_pais: nombre: pais descripcion: - Permiso_22: + Permiso_preferencia: nombre: preferencia descripcion: - Permiso_23: + Permiso_provincia: nombre: provincia descripcion: - Permiso_24: - nombre: relActividadDocente + Permiso_relactividaddocente: + nombre: relactividaddocente descripcion: - Permiso_25: - nombre: relAnioActividad + Permiso_relactividad: + nombre: relactividad descripcion: - Permiso_26: - nombre: relCalendariovacunacionAlumno + Permiso_relcalendariovacunacionalumno: + nombre: relcalendariovacunacionalumno descripcion: - Permiso_27: + Permiso_responsable: nombre: responsable descripcion: - Permiso_28: + Permiso_rol: nombre: rol descripcion: - Permiso_29: + Permiso_tipoiva: nombre: tipoiva descripcion: - Permiso_30: + Permiso_turno: nombre: turno descripcion: - Permiso_31: + Permiso_tipolocacion: nombre: tipolocacion descripcion: - Permiso_32: + Permiso_tipoespacio: nombre: tipoespacio descripcion: - Permiso_33: + Permiso_espacio: nombre: espacio descripcion: - Permiso_34: + Permiso_cargobaja: nombre: cargoabaja descripcion: - Permiso_35: + Permiso_conceptobaja: nombre: conceptobaja descripcion: - Permiso_36: + Permiso_distritoescolar: nombre: distritoescolar descripcion: - Permiso_37: + Permiso_horarioescolar: nombre: horarioescolar descripcion: - Permiso_38: + Permiso_horarioescolartipo: nombre: horarioescolartipo descripcion: - Permiso_39: + Permiso_tipodocente: nombre: tipodocente descripcion: - Permiso_40: + Permiso_organizacion: nombre: organizacion descripcion: - Permiso_41: - nombre: Asistencia - descripcion: Asistencia - Permiso_42: - nombre: distrito - descripcion: distrito - Permiso_43: - nombre: distritoescolar - descripcion: Distrito Escolar - Permiso_44: + Permiso_asistencia: + nombre: asistencia + descripcion: Asistencias + Permiso_legajopedagogico: nombre: legajopedagogico descripcion: - Permiso_45: + Permiso_tipoasistencia: nombre: tipoasistencia descripcion: - Permiso_46: + Permiso_formatofecha: nombre: formatofecha descripcion: - Permiso_47: - nombre: relLocacionEspacio + Permiso_rellocacionespacio: + nombre: rellocacionespacio descripcion: - Permiso_48: - nombre: relAlumnoDivision + Permiso_relalumnodivision: + nombre: relalumnodivision descripcion: - Permiso_49: + Permiso_boletin: nombre: boletin descripcion: - Permiso_50: + Permiso_boletinconcepto: nombre: boletinconcepto descripcion: boletinconcepto - Permiso_51: + Permiso_boletinnotas: nombre: boletinnotas descripcion: boletinnotas - Permiso_52: + Permiso_tipodocumento: nombre: tipodocumento descripcion: tipodocumento - Permiso_53: - nombre: informes + Permiso_informe: + nombre: informe descripcion: informes - Permiso_54: - nombre: rolResponsable + Permiso_rolresponsable: + nombre: rolresponsable descripcion: Rol de Responsables - Permiso_55: + Permiso_orientacion: nombre: orientacion descripcion: Orientacion - Permiso_56: + Permiso_tiponivel: nombre: tiponivel descripcion: Tipo de Nivel - Permiso_57: + Permiso_carrera: nombre: carrera descripcion: Carreras + Permiso_legajosalud: + nombre: legajosalud + descripcion: Legajo de Salud Rol: - Rol_1: + Rol_administrador: nombre: Administrador descripcion: Administrador del sistema activo: 1 RolPermiso: Rol_permiso_1_1: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_1 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_actividad Rol_permiso_1_2: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_2 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_alumno Rol_permiso_1_3: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_3 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_anio Rol_permiso_1_4: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_4 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_asistencia Rol_permiso_1_5: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_5 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_boletin Rol_permiso_1_6: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_6 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_boletinconcepto Rol_permiso_1_7: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_7 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_boletinnotas Rol_permiso_1_8: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_8 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_calendario Rol_permiso_1_9: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_9 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_calendariovacunacion Rol_permiso_1_10: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_10 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_cargobaja Rol_permiso_1_11: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_11 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_carrera Rol_permiso_1_12: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_12 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_ciclolectivo Rol_permiso_1_13: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_13 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_conceptobaja Rol_permiso_1_14: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_14 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_concepto Rol_permiso_1_15: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_15 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_cuenta Rol_permiso_1_16: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_16 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_distritoescolar Rol_permiso_1_17: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_17 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_division Rol_permiso_1_18: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_18 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_docente Rol_permiso_1_19: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_19 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_docentehorario Rol_permiso_1_20: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_20 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_escalanota Rol_permiso_1_21: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_21 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_espacio Rol_permiso_1_22: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_22 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_establecimiento Rol_permiso_1_23: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_23 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_feriado Rol_permiso_1_24: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_24 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_formatofecha Rol_permiso_1_25: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_25 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_horarioescolar Rol_permiso_1_26: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_26 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_horarioescolartipo Rol_permiso_1_27: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_27 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_informe Rol_permiso_1_28: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_28 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_legajocategoria Rol_permiso_1_29: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_29 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_legajopedagogico Rol_permiso_1_30: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_30 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_legajosalud Rol_permiso_1_31: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_31 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_locacion Rol_permiso_1_32: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_32 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_organizacion Rol_permiso_1_33: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_33 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_orientacion Rol_permiso_1_34: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_34 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_pais Rol_permiso_1_35: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_35 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_preferencia Rol_permiso_1_36: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_36 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_provincia Rol_permiso_1_37: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_37 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_relactividad Rol_permiso_1_38: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_38 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_relactividaddocente Rol_permiso_1_39: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_39 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_relalumnodivision Rol_permiso_1_40: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_40 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_relcalendariovacunacionalumno Rol_permiso_1_41: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_41 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_rellocacionespacio Rol_permiso_1_42: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_42 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_responsable Rol_permiso_1_43: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_43 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_rol Rol_permiso_1_44: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_44 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_rolresponsable Rol_permiso_1_45: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_45 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipoasistencia Rol_permiso_1_46: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_46 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipodocente Rol_permiso_1_47: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_47 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipodocumento Rol_permiso_1_48: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_48 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipoespacio Rol_permiso_1_49: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_49 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipoiva Rol_permiso_1_50: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_50 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tipolocacion Rol_permiso_1_51: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_51 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_tiponivel Rol_permiso_1_52: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_52 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_turno Rol_permiso_1_53: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_53 - Rol_permiso_1_54: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_54 - Rol_permiso_1_55: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_55 - Rol_permiso_1_56: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_56 - Rol_permiso_1_57: - fk_rol_id: Rol_1 - fk_permiso_id: Permiso_57 + fk_rol_id: Rol_administrador + fk_permiso_id: Permiso_usuario UsuarioRol: - Usuario_rol_1_1: + Usuario_Rol_administrador_1: fk_usuario_id: Usuario_1 - fk_rol_id: Rol_1 + fk_rol_id: Rol_administrador