Llevaba tiempo queriendo dedicarle tiempo y esfuerzo en una solución fácil y agradable para disponer de un sistema de archivo electrónico.
Este es un ejemplo de posibilidades de un sistema de archivo. Está hecho para que pueda servir de ejemplo/plantilla a aquellos desarrolladores de PHPRunner que quieran disponer de una solución pequeña, simple y de alta capacidad de crecimiento, teniendo en cuenta la gran capacidad que tiene la solución de PHPRunner en almacenamientos en red y la gestión de seguridad y acceso que se ha dotado a la solución.
08/12/2022
* He actualizado la versión original con mejoras de código.
* He realizado una versión en PHPR 10.8, (edas2) con mejoras funcionales y de rendimiento sin usar Dashboards. Esta es la versión recomendada
Objetivo
Disponer de una gestión de archivo electrónico de documentos con características de seguridad de acceso muy dinámicas, para que se pueda organizar los acceso por estructura orgánica de una compañía o por la estructura funcional, dependiendo de los procedimientos de la compañía.
DEMO: https://fhumanes.com/edas/
DEMO: https://fhumanes.com/edas2/
Usuarios de prueba: user1, user2 y admin . La password es igual al login
Requisitos del sistema
- Debe ser un sistema para toda la compañía por lo que su organización y estructura debe contemplar la mezcla de acceso por estructura orgánica y funcional.
- Los usuarios trabajarán con una única pantalla. Sólo los administradores tendrán pantallas adicionales.
- Funcionalmente, debe trabajar como las estructura de ficheros Windows o de cualquier otro sistema operativo. Sólo ofrecerá la estructura a aquellos que tengan permiso a verla.
- Los documentos (no significa fichero) puede ser un ente mayor al fichero, por ejemplo, expediente, y en él se contendrán los diferentes archivos.
- Los documentos/ficheros dispondrán de un link que el sistema facilitará copia al porta papeles y con él se podrá acceder de forma directa al documento.
- En todo momento, a través del «rastro de migas», el usuario conocerá el punto de la estructura y podrá, mediante un clic, subir niveles de directorios rápidamente.
- En el almacén (file system en este caso) se creará un directorio con el ID del registro de file, para que los ficheros no se mezclen.
De inmediato, me voy a poner a desarrollar un complemento a este sistema que permitirá acceso a él mediante Rest Full API, y de esta forma se podrá integrar en los desarrollos que se hagan en PHPRunner u otros sistemas. Este nuevo sistema es el que tenía muchas ganas de emprender.
Solución técnica
Se han utilizados los siguientes plugins:
- Swith .- Para establecer un check box con mejor presentación
- Select2 .- Para la selección múltiple. Tiene funcionalidades que no posee los controles estándares de PHPRunner.
Todos los plugines los podéis descargar, de forma gratuita, de está páginas: Plugines
El modelo de datos que he utilizado es muy, muy simple.
Como podéis apreciar, es una tabla para definir los directorios y su jerarquía y otra para los ficheros/documentos.
Lo más especial viene en la relaciones de usuarios (owners) y grupos de acceso en lectura y escritura (reading_groups y writing_groups), que podéis apreciar son múltiples valores en un único campo.
Lo mismo he hecho en la relación de usuarios a grupos (belongingGroups), pero para simplificar las asignaciones de grupos a los usuarios he utilizado plantillas funcionales, de tal forma que sea mucho más sencillo la gestión de los permisos, con una solución (por favor, revisadla) que es muy sencilla y elegante.
Mostraré algunas pantallas para explicar aquellas características más relevantes.
Como he indicado, para el usuario general sólo dispondrá de una opción que es la «navegación» por los directorios y documentos que tiene autorizados los accesos.
Como podéis apreciar he utilizado una página «dashboard». Está hecho en PHPRunner 10.7. Como sabéis, la versión 10.8 ha mejorado la presentación de los «darhboard» y podéis mejorar la presentación en dicha versión.
(1) .- Facilita la información del directorio en donde está posicionado.
(2) .- se ha dotado al sistema de «un rastro de migas» o «path» para que puedas identificar la «profundidad» del directorio. Se puede utilizar esta información para navegar en dicha estructura.
(3) .- Información de los directorio que están debajo del actual y que el usuario tiene acceso.
(4) .- Información de los archivos/documentos que son dependientes del directorio y que el usuario tiene acceso.
(5) .- He modificado la presentación de los archivos para facilitar información, pero no permitir, desde esta página, la descarga de los mismos.
Esta es la presentación de visualización. Internamente, por el hecho de visualizar se ha creado un registro en la tabla de «audit» para dejar traza de esta acción.
(1) .- Se sigue mostrando el «rastro de migas», para facilitar información de la dependencia.
(2) .- Se ha programado un botón para copiar al portapapeles el «path» o «link» del documento. Esto facilita la comunicación por referencia a través del correo electrónico o cualquier otro aplicativo.
(3).- Una referencia conlleva que puede haber varios archivos, accesible si dispones de los permisos.
Desde cualquier punto se dispone del botón (1) que te habilita una página popup ara facilitar el path de un documento (2) y te posiciona en la información del path,
(1) .- Se ha posicionado en el último directorio del path. Previamente ha recorrido todos los directorios y ha comprobado su existencia y que el usuario tiene concedido el acceso a cada uno de ellos.
(2) .- Ha hecho la búsqueda del documento solicitado y lo muestra en rojo.
(3) .- Muestro un ejemplo de visualización de conjunto de permisos del directorio. Se muestra con una visualización como si fuese unos tags.
Hay muy poco código, por lo que considero que es un buen ejemplo para:
- Gestión de acceso a la información (directorios y ficheros) fuera de los estándares de PHPRunner.
- Gestión sobre los ficheros subidos y gestionados por PHPRunner, para ubicarlos en un directorio (ID del registro) y así utilizar un directorio tmp como situación intermedia hasta que se completa el registro.
- Gestión de autorizaciones de los usuarios a través de plantillas funcionales de agrupación de permisos.
- Interface para «rastro de migas» para uso de estructuras de información jerárquicas.
- Funcionalidad de copy / paste, de información para facilitar la operativa de los usuarios.
Espero que os guste y cualquier cosa que necesitéis explicación, me lo indicáis a través de mi email [email protected]
Como siempre, os dejo los fuentes para que lo descarguéis y probéis en vuestros PC’s.