TP - Administrador de Permisos

Introducción

La idea es hacer un administrador de permisos de usuarios. Atención que NO HAY QUE HACER EL CONTROL DE PERMISOS DE NADA. Imaginemos que la idea de permisos en un sistema tiene dos partes:

  • la definición de los permisos
  • la ejecución, o el "uso" de esos permisos, al momento de utilizar el sistema.

El objetivo del TP es solo concentrarnos en el primer punto.

Para eso vamos a hacer una webapp que nos proveea los casos de uso principales para la administración de permisos.

Van a poder elegir, como framework web para implementar esto:

  • apache wicket
  • seaside

Dominio

  • Existen carpetas, que forman una estructura arborea.
    • Hay una carpeta root, y debajo múltiples niveles de carpetas hijas.
    • El sistema debe permitir crear, borrar y editar carpetas.
  • Existen usuarios
    • sin restricciones más que:
      • userName
      • password
    • El sistema debe permitir crear, borrar y editar usuarios.
  • Existe la idea de grupos
    • un grupo tiene un nombre/identificador
    • Se pueden agregar/eliminar usuarios de un grupo dado.
    • un Usuario puede pertenecer a más de un grupo.
  • Existe la idea de "Permiso", que consta de los siguientes elementos
    • "Quién" : para qué sujeto aplica este permiso.
      • un usuario específico
      • un grupo
      • * (todos)
    • "Qué" : sobre qué recurso aplica este permiso, es decir para qué carpeta.
    • "Cómo" : qué es lo que se le permite:
      • lectura
      • lectura + escritura
      • nada (elimina los permisos)

Bonus

  • Hacer que persista en el forma de archivo de svn (ver formato acá).
  • Al crear un nuevo usuario, que le genere una carpeta propia con su nombre y le dé permisos.
  • Mejoras de usabilidad.
    • Mover una carpeta
    • Decirme las carpetas que puede leer/escribir un usuario - Los usuarios que pueden leer/escribir una carpeta.
  • Validaciones:
    • qué sucede si intento borrar un Grupo/Usuario que tiene permisos asociados ?
      • que tire un warning / confirmación ?
      • que proponga borrar también los permisos asociados (listandolos y permitiendo seleccionar ?)
    • qué sucede si intento borrar un Grupo que tiene usuarios asignados ?