AnsweredAssumed Answered

droits et catégories

Question asked by fmarin on Apr 2, 2014
bonjour

je cherche un moyen de faire de la catégorisation automatique.

Je m'explique : un article saisi par un utilisateur a fait l'objet d'une analyse sémantique pour en extraire les concepts clés ; chacun de ces concepts doit permettre de catégoriser l'article en question.

Après création de l'article dans le repository, je crée la catégorie si elle n'existe pas, au bon niveau de la classification, puis j'associe les catégories à la référence du document créé. Il est clair que des mécanismes sont mis en place pour contrôler l'extension tout azimut de cette classification …

Cela fonctionne finement … avec les droits d'administration, mais pas avec les droits d'utilisateur !

j'ai essayé le code suivant, qui crée un predicate, puis fait un setAcl, mais qui, en exécution, provoque un "03020743 Access Denied.  You do not have the appropriate permissions to perform this operation."

je précise que le code est exécuté dans un webservice (protocole Soap) sur une instance alfresco community 4.2.c

  
//create the node reference
reference = new Reference();
reference.setStore(spacesStore);
reference.setPath("/cm:categoryRoot/cm:generalclassifiable/cm:Les_x0020_contributions");

//create the predicate
predicate = new Predicate();
predicate.setNodes(new Reference[]{reference});

//set ace
ACE aceAdd = new ACE();
aceAdd.setAuthority("GROUP_TEST");
aceAdd.setPermission(Constants.WRITE);
aceAdd.setAccessStatus(AccessStatus.acepted);

ACL[] acl;
try {
   acl = accessControlService.addACEs(predicate, new ACE[]{aceAdd});
} catch (AccessControlFault e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return true;
} catch (RemoteException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return true;
}

la solution est bien entendu d'ouvrir une session d'administration, mais cela veut dire que le mot de passe doit être inscrit quelque part …

Frédéric

Outcomes