cancel
Showing results for 
Search instead for 
Did you mean: 

Modifier les permissions à la création d'un NodeRef

amandine_b
Champ in-the-making
Champ in-the-making
Bonjour,

Je développe actuellement un traitement permettant de générer un PDF à partir d'un NodeRef existant, puis de modifier les droits sur le NodeRef du PDF généré.
Lors de la modification des droits, une partie n'est pas réalisé : je souhaite ajouter des droits en lecture et supprimer les droits d'héritage, mais à l'exécution, les droits en lecture sont bien ajoutés mais l'héritage n'est pas désactivé.

Voici ma fonction de modification des droits :
private void droitsDuPDF() {   PermissionService permissionService = getServiceRegistry().getPermissionService();   // Suppression des droits sur le fichier   permissionService.deletePermissions(nodePDF);   permissionService.setInheritParentPermissions(nodePDF, false);   // Récupération du répertoire parent   ChildAssociationRef caRepertoire = nodeService.getPrimaryParent(nodeOrigine);   NodeRef repertoire = caRepertoire.getParentRef();   // Récupération des groupes ayant des droits sur l'espace   Set<AccessPermission> droitsRepertoire = permissionService.getAllSetPermissions(repertoire);   // Ajout des droits en lecture sur le PDF, pour chaque groupe récupéré du répertoire    for (AccessPermission permission : droitsRepertoire) {      permissionService.setPermission(nodePDF,permission.getAuthority(),PermissionService.CONSUMER, true);   }}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


Lors de l'exécution, le nodePDF contient bien une référence de NodeRef. Néanmoins, toujours pendant l'exécution, quand je recherche ce nodeRef via le navigateur de noeud, je n'obtiens pas de résultat (il ne trouve pas mon nodeRef). Une fois le traitement global terminé, je relance la recherche et là le nodeRef apparaît dans le navigateur de noeud.

J'ai tenté de lancer ma fonction de génération de PDF dans un transaction helper, afin de commit le nodeRef quand il est créé, mais sans amélioration :
   private NodeRef convertToPdf() throws Exception  {      RetryingTransactionCallback<Object> txnWork = new RetryingTransactionCallback<Object>() {         @Override         public Object execute() throws Exception         {            //mon traitement         }      };      TransactionService transactionService = getServiceRegistry().getTransactionService();      NodeRef child = (NodeRef) transactionService.getRetryingTransactionHelper().doInTransaction(txnWork, true);      return child;   }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


Je précise également que mon traitement global est lancé avec "AuthenticationUtil.runAsSystem".

Auriez-vous une idée pour résoudre ce problème ?

Je travaille sur la version 4.0.2 Entreprise d'Alfresco.

Merci d'avance !
2 REPLIES 2

amandine_b
Champ in-the-making
Champ in-the-making
Bonjour,

Le problème est toujours existant. Je n'ai toujours pas de solutions.
Si vous avez une idée, n'hésitez pas !

Merci d'avance.

cleseach
Star Contributor
Star Contributor
Bonjour,

A la lecture de votre code, rien ne m'appraît comme choquant.
Pouvez-vous essayer en simplifiant "droitsDuPDF" pour ne laisser que la désactivation de l'héritage ?
Vérifiez également qu'il n'y a pas d'exception de générée et qui serait catchée sans traitement.

Cordialement,
Charles Le Seac'h