9 Feb 2012 17:27
Libro sobre ACLs
Muy buenas,
Tengo una pequeña duda de concepto que me gustaría darle una solución elegante.
El escenario es el siguiente:
- Una aplicación con unos 200 usuarios.
- Los usuarios pertenecen a grupos.
- Los grupos tienen Roles.
- Existen tres roles principales: Usuario, Coordinador y Administrador.
Existen muchos tipos de recursos diferentes. Por ejemplo, "localidades", "actividades", "zonas", etc.
La idea es que el usuario Administrador pueda crear "localidades" a través de un formulario escribiendo los datos necesarios (denominación, fotografía, población, etc).
Cada localidad tiene asociado a uno o a varios usuarios. Estos usuarios pueden editar su o sus localidades localidades.
Los que tienen el Rol Coordinador manejan una "zona", que es un conjunto de localidades y también deberían tener permisos para modificar.
Todos los usuarios pueden ver el listado de localidades (index) y las características de cada una ellas (show), pero no poder editarlas.
Solo puede borrar localidades el Administrador.
Todos los recursos funcionan de forma similar.
Por ejemplo, las actividades las crea cada usuario.
Todos los usuarios pueden ver todas las actividades, pero solo pueden modificar o borrar las suyas.
El coordinador de zona también puede modificar las actividades de sus zonas, pero no borrarlas, etc.
Espero que se entienda.
Tengo implementada una serie de tablas con usuarios, grupos y roles (parecido a las ACL de Cakephp), pero mi solución para el problema no es muy elegante:
En el Application_controller tengo un filtro donde voy mirando que "controller" y que "action" hacen y por cada uno de ellos tengo un if then else para permitir acceso al recurso o no. Tengo que escribir 7 if then else por cada conjunto de recursos (index, show, new, edit, create, update, destroy).
Y después de este rollo...
Me gustaría conocer alguna forma elegante de implementar esto. Algún libro que pueda comprar, alguna web (no tiene porqué ser de Rails), incluso algún plugin que implemente esto o algún proyecto similar de GitHub que pueda ver su funcionamiento.
Eso es todo.
Muchas gracias por llegar hasta aquí leyendo....
Luis Miguel Cabezas Granado
Ingeniero Técnico Informática de Sistemas
<div> <div>Muy buenas,</div> <div><br></div> <div>Tengo una pequeña duda de concepto que me gustaría darle una solución elegante.</div> <div><br></div> <div>El escenario es el siguiente:</div> <div><br></div> <div>- Una aplicación con unos 200 usuarios.</div> <div>- Los usuarios pertenecen a grupos.</div> <div>- Los grupos tienen Roles.</div> <div>- Existen tres roles principales: Usuario, Coordinador y Administrador.</div> <div><br></div> <div>Existen muchos tipos de recursos diferentes. Por ejemplo, "localidades", "actividades", "zonas", etc.</div> <div><br></div> <div>La idea es que el usuario Administrador pueda crear "localidades" a través de un formulario escribiendo los datos necesarios (denominación, fotografía, población, etc).</div> <div>Cada localidad tiene asociado a uno o a varios usuarios. Estos usuarios pueden editar su o sus localidades localidades.</div> <div>Los que tienen el Rol Coordinador manejan una "zona", que es un conjunto de localidades y también deberían tener permisos para modificar.</div> <div>Todos los usuarios pueden ver el listado de localidades (index) y las características de cada una ellas (show), pero no poder editarlas.</div> <div>Solo puede borrar localidades el Administrador.</div> <div><br></div> <div>Todos los recursos funcionan de forma similar.</div> <div><br></div> <div>Por ejemplo, las actividades las crea cada usuario.</div> <div>Todos los usuarios pueden ver todas las actividades, pero solo pueden modificar o borrar las suyas.</div> <div>El coordinador de zona también puede modificar las actividades de sus zonas, pero no borrarlas, etc.</div> <div><br></div> <div><br></div> <div>Espero que se entienda.</div> <div><br></div> <div>Tengo implementada una serie de tablas con usuarios, grupos y roles (parecido a las ACL de Cakephp), pero mi solución para el problema no es muy elegante:</div> <div><br></div> <div>En el Application_controller tengo un filtro donde voy mirando que "controller" y que "action" hacen y por cada uno de ellos tengo un if then else para permitir acceso al recurso o no. Tengo que escribir 7 if then else por cada conjunto de recursos (index, show, new, edit, create, update, destroy).</div> <div><br></div> <div><br></div> <div>Y después de este rollo...</div> <div><br></div> <div><br></div> <div>Me gustaría conocer alguna forma elegante de implementar esto. Algún libro que pueda comprar, alguna web (no tiene porqué ser de Rails), incluso algún plugin que implemente esto o algún proyecto similar de GitHub que pueda ver su funcionamiento.</div> <div><br></div> <div>Eso es todo.</div> <div><br></div> <div>Muchas gracias por llegar hasta aquí leyendo....</div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <br><div> <span class="Apple-style-span"><div><div> <div>Luis Miguel Cabezas Granado</div> <div>Ingeniero Técnico Informática de Sistemas</div> <div><a href="http://www.magolope.com/">http://www.magolope.com/</a></div> <div><a href="http://ninjaphp.wordpress.com/">http://ninjaphp.wordpress.com/</a></div> </div></div></span> </div> <br> </div>
RSS Feed