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

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

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

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
amandine_b
Member II

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

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
Active Member II

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

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