Gestión de permisos con CMIS

cancel
Showing results for 
Search instead for 
Did you mean: 
DavidSF
Member II

Gestión de permisos con CMIS

Jump to solution

Buenas,

Estoy intentando gestionar los permisos sobre documentos/expedientes utilizando CMIS, para los casos de escritura no hay problema, ya que existe una gran variedad de permisos y puedo por ejemplo consultar si el padre de un nodo tiene permisos de crear documento (algo así como "parentFolder.getAllowableActions().getAllowableActions().contains(Action.CAN_CREATE_DOCUMENT)" y no me hace falta realizar más comprobaciones.

El problema me surge cuando quiero tratar los permisos de manera más sencilla, por ejemplo, comprobar simplemente si el usuario tiene permisos de lectura sobre un nodo para poder recuperarlo, ya que existen permisos como canGetProperties, CanGetContentStream, canGetObjectRelationships, etc. y tendría que hacer muchas comprobaciones para recuperar partes de la información de un nodo, pero no existe ningún permiso para si puede recuperarlo o no simplemente

Por lo que estuve mirando existen los ACL que son uno o más ACE, que vienen a ser permisos personalizados si no me equivoco, pero no encontré ningún ejemplo o explicación de cómo funcionan más allá de la explicación de la propagación y capabilityACL (lo cual tampoco me queda del todo claro como funciona).

 

Mi pregunta es... ¿Existe alguna manera sencilla de manejar los permisos para que, si un usuario quiere recuperar un nodo, no haga falta comprobar unos 6 o 7 permisos diferentes como mínimo? ¿Es necesario hacer uso de los ACL? de ser así ¿Existe alguna guía práctica de cómo gestionarlos?

 

Por otro lado, otra duda que me surge es con las versiones, las cuales funcionan con el checkIn y checkOut por lo que he podido leer, pero no me ha quedado claro como puedo crear nuevas versiones, acceder a alguna versión concreta o bloquear el nodo

 

Un saludo y muchas gracias por la ayuda

1 Solution

Accepted Solutions
cesarista
Customer

Re: Gestión de permisos con CMIS

Jump to solution

Hola David:

No se si te sigo del todo, pero te cuento mi experiencia con CMIS y la gestión de permisos de una aplicación de gestión de expedientes.

CMIS es un estándar de gestión documental para un repositorio CMIS (como Alfresco, Nuxeo, Sharepoint, Filenet..), y la parte relativa a permisos del estándar no cubre complementamente, ni suele ser lo más adecuado para gestionar permisos en Alfresco. Tiene sentido puesto que los modelos de permisos de todas estas herramientas son diferentes y pueden manejar conceptos que no tengan su equivalente.

Creo recordar que el estandar CMIS permite definir permisos a nivel de nodo (cmis:read y cmis:write), aunque no el concepto de rol (conjunto de permisos) como tal que se utiliza normalmente en el repo. Tampoco pudimos via CMIS desactivar la herencia de permisos en una carpeta creada.

En conclusión, para salvar esta situación utilizamos el API REST / Webscript para la parte de permisos, o si creaba una carpeta de expediente por ejemplo, la copiaba desde una plantilla de espacio en donde ya estaba desactivada la herencia. Llegamos también a implementar reglas / behaviours en Alfresco para setear via API JS por ejemplo un determinado permiso en un evento de creación de un expediente.

Saludos.

--C.

View solution in original post

1 Reply
cesarista
Customer

Re: Gestión de permisos con CMIS

Jump to solution

Hola David:

No se si te sigo del todo, pero te cuento mi experiencia con CMIS y la gestión de permisos de una aplicación de gestión de expedientes.

CMIS es un estándar de gestión documental para un repositorio CMIS (como Alfresco, Nuxeo, Sharepoint, Filenet..), y la parte relativa a permisos del estándar no cubre complementamente, ni suele ser lo más adecuado para gestionar permisos en Alfresco. Tiene sentido puesto que los modelos de permisos de todas estas herramientas son diferentes y pueden manejar conceptos que no tengan su equivalente.

Creo recordar que el estandar CMIS permite definir permisos a nivel de nodo (cmis:read y cmis:write), aunque no el concepto de rol (conjunto de permisos) como tal que se utiliza normalmente en el repo. Tampoco pudimos via CMIS desactivar la herencia de permisos en una carpeta creada.

En conclusión, para salvar esta situación utilizamos el API REST / Webscript para la parte de permisos, o si creaba una carpeta de expediente por ejemplo, la copiaba desde una plantilla de espacio en donde ya estaba desactivada la herencia. Llegamos también a implementar reglas / behaviours en Alfresco para setear via API JS por ejemplo un determinado permiso en un evento de creación de un expediente.

Saludos.

--C.