clonación de usuario

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

clonación de usuario

Hola:
Tras leer el interesante tema anterior sobre la creación masiva de usuarios, me gustaría saber si hay forma de poder crear o modificar "manualmente" un usuario suelto sin usar la interfaz gráfica de Alfresco, por ejemplo mediante xml, y sin necesidad de todo lo comentado en el caso anterior que para uno o 2 usuarios no metrece la pena.
Por ejemplo, he leido que para crear un rol específico se puede ajustar manualmente el archivo permissionsDefinition.xml. No sé si del mismo modo hay algún xml o similar en el que se almacene la info de un usuario y que en un momento dado se pueda por ejemplo clonar un usuario a base "copiar y pegar" lo de ese usuario (espacios a los que accede y permisos) en el mismo xml para poder luego modificar tan solo el nombre de usuario.
Ya sé q se puede hacer la interfaz gráfica, pero para el caso de clonar por ejemplo un usuario lo del xml ahorraría su tiempo si el usuario tiene muchos espacios asociados. El caso es que buscando en mi directorio Alfresco y subdirectorios no veo esa info en ningún xml. Imagino que la info del perfil de cada usuario se esté guardando exclusivamente en la base de datos. En ese caso ¿hay forma de acceder a ella por ejemplo via una herramienta de BD o mejor solo via API o interfaz gráfica?
muchas gracias!
2 Replies
ajv
Member II

Re: clonación de usuario

Hola Jaime,

He estado buscando y no he encontrado ningún servicio en Alfresco que te proporcione todo lo que pides.
Se me ocurre algún enfoque por donde se puede empezar a mirar, pero me saltan problemas pronto:
- La idea es atacar directamente la BD, modificando las tablas que posiblemente estuvieran afectadas. No existe documentación (o no está compartida) sobre el esquema de base de datos. Llevo ya algún tiempo descifrando cosillas, pero es lento el proceso. Por lo que sé, se debería crear un nuevo registro con las mismas propiedades en la tabla ALF_AUTHORITY (si no voy mal, recipient es el nombre de usuairo). De esta forma, tendrías creado el usuario. Se debería mirar también la tabla ALF_AUTH_EXT_KEYS por si tuviese alguna referencia con el usuario que estamos clonando (ID de la tabla ALF_AUTH_EXT_KEYS referencia al recipient de ALF_AUTHORITY).
- Lo siguiente sería copiar todos los nodos, junto con sus propiedades en los que el usuario es owner (no veo mucho sentido en clonar aquellos en los que únicamente está invitado, sino más bien los que está como propietario y su homefolder)…para esto entran en juego las siguientes tablas:
    ALF_NODE (Son los nodos en sí, con su id, protocolo, etc.).
    ALF_NODE_PROPERTIES (Son las propiedades de un nodo, con node_id como foreign key hacia ALF_NODE).
Yo lo que haría es copiar nodos y propiedades de nodos cuyo owner sea el del usuario clonado, es decir, copiar los node-properties cuya propiedad con QNAME = '{http://www.alfresco.org/model/content/1.0}owner' AND STRING_VALUE = 'usuario_a_clonar'.

- También es importante considerar el tema de los permisos de acceso a los nodos. Si se supone que debe tener acceso a los mismos nodos a los que tenía el usuario a clonar, sería tan sencillo como copiar los registros de ALF_ACCESS_CONTROL_ENTRY cuyo AUTHORITY_ID sea el del usuario a clonar. Esto, de todas formas, no creo que sea muy correcto, ya que lo que habría que hacer es plasmar esos mismos permisos con respecto a los nuevos nodos creados…por lo que durante la creación de nodos, se debería integrar esta de los permisos.

- Por otro lado, quedaría pendiente todo el tema de las asociaciones (Hay tablas como ALF_CHILD_ASSOC y ALF_NODE_ASSOC que también requerirían actualizarse convenientemente.

Bueno, como ves es un proceso complicadillo y lo más peligroso es que juegas directamente con la BD por lo que habría que estar muy seguro de los cambios que se llevan a cabo. Quizás se podría abordar a través de los servicios de Alfresco (NodeService, PersonService, etc.) pero igualmente requiere no sólo creación de nuevos nodos sino modificación de las nuevas propiedades para que fuera una clonación coherente.
En fin, si te decides tirar adelante, informa e intentaremos profundizar más en el tema  :wink:

Saludos!!
jaime_martin
Member II

Re: clonación de usuario

Muchas gracias por la info, en efecto no es nada recomendable hacer esto por el riesgo de manipular erroneamente esa información debido a la complejidad implicada. Para una clonación suelta no merece la pena de ninguna manera. Y si tuviera que hacerlas masivas creo que es mejor recurrir a la generación automática de usuarios que comentaba parachute hace poco.
Adrián, muchas gracias de nuevo por lo que has investigado del tema de la clonación!