cancel
Showing results for 
Search instead for 
Did you mean: 

[résolu]comment personnaliser l'affichage d'actions?

ethan
Champ in-the-making
Champ in-the-making
Bonsoir Smiley Happy

J'aimerais savoir s'il est possible de modifier une action pré-existante, en l'occurrence l'action "copy" (qui apparait pour chaque fichier et chaque space) ?
J'ai déjà essayé de surcharger les action-group pour la supprimer de l'interface mais ça n'a pas fonctionné. J'ai aussi essayé de lui ajouter l'attribut hide="true" dans le action-group ou elle se trouve mais ça n'a pas fonctionné non plus. J'ai enfin essayé de lui ajouter la permission READ en la paramétrant à false mais le résultat reste le même…  Toutes ces tentatives ont été faites dans mon fichier web-client-config-custom.xml

Il me reste une solution : lui ajouter un evaluator qui affiche l'action seulement si l'utilisateur est administrateur. Mais avant de me lancer là dedans, j'aimerais savoir si ça vaut le coup d'essayer ou s'il y a une méthode plus simple que je n'aurais pas trouvée.

Merci par avance Smiley Happy
17 REPLIES 17

ethan
Champ in-the-making
Champ in-the-making
J'utilise la version 3.3g d'Alfresco. J'ai testé avec le compte admin et l'action discussion apparaît bien. Donc il s'agit bien d'un problèmes de droits d'accès. J'ai remarqué qu'on peut ajouter des permissions dans la configuration des actions. Mais est-il possible de surcharger la configuration d'une action déjà existante?

Je me demande également s'il ne faudrait pas plutôt jouer sur les permissions de lecture/écrire des documents et dossiers? A titre d'information, tous les dossiers et fichiers sont ajoutés à Alfresco via une classe java perso qui copie le contenu d'un autre repository (Je me suis basé sur le sdk FirstJCRClient pour la réaliser).

jayjayecl
Confirmed Champ
Confirmed Champ
Mais est-il possible de surcharger la configuration d'une action déjà existante?

Oui, dans le web-client-config-custom.xml

ethan
Champ in-the-making
Champ in-the-making
J'ai donc surchargé l'action create_forum_node dans la configuration de mon type mcm:resource en remplaçant l'autorisation de création pour les collaborateurs par celle pour les lecteurs et l'icône apparait bien à côté de chaque document. Seul problème, lorsque je clique dessus pour créer une discussion, j'ai le message d'erreur suivant :

Failed to create new space due to error: 07110006 Access Denied. You do not have the appropriate permissions to perform this operation.

En fait, comme les documents sont crées par programmation, l'auteur de tous ces documents est le compte admin (la connexion au repository se fait avec le compte admin). je pense que c'est la raison pour laquelle j'ai ce message d'erreur. Est-ce qu'il y aurait un moyen de changer ça?

jayjayecl
Confirmed Champ
Confirmed Champ
je pense que le souci vient de la configuration native des permissions.
En jetant un oeil dans le permissionsDefinition.xml, vous trouverez peut-être la raison de cette erreur…

ethan
Champ in-the-making
Champ in-the-making
Après quelques recherches et la lecture du fichier permissionDefinitions.xml, j'ai décidé de créer un nouveau rôle basé sur le rôle Contributor auquel j'ai ajouté le droit d'écriture. J'ai modifié la configuration de l'action create_node_forum pour qu'elle apparaisse seulement si l'utilisateur connecté possède mon custom role sur le dossier ou le fichier en question.

Le problème c'est qu'au départ, je pensais que les droits était attachés aux utilisateurs alors qu'en réalité, j'ai appris qu'ils sont attachés aux nœuds. En utilisant le node browser, j'ai remarqué l'information suivante sur le space root qui contient tous mes documents crées :

[img]http://img11.hostingpics.net/thumbs/mini_914391permission_alfresco.png[/img]

Il doit être possible via ma classe java de remplacer le rôle Consumer par mon rôle custom non? En cherchant un peu, j'ai cru comprendre qu'il faut utiliser le permissionService ou le AuthenticationService mais je n'en suis pas sûr. : (

ethan
Champ in-the-making
Champ in-the-making
Je m'auto-répond parce que j'ai fini par trouver la solution Smiley Happy Je ne sais pas si c'est le meilleur moyen mais ça fonctionne comme ça ^^

Dans ma classe java, j'ai donc ajouté le code suivant après la création du nœud root qui contient tous les documents et dossiers :

ServiceRegistry serviceRegistry = (ServiceRegistry) context.getBean(ServiceRegistry.SERVICE_REGISTRY);
permService = serviceRegistry.getPermissionService();
       
NodeRef nodeRef = JCRNodeRef.getNodeRef(customCompanyHome);
permService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.CONTRIBUTOR, true);
permService.setPermission(nodeRef, PermissionService.ALL_AUTHORITIES, PermissionService.WRITE, true);

Et ensuite, après la création de chaque dossier et chaque document enfants, j'ai ajouté le code suivant, qui active l'héritage des droits du nœud parent:

NodeRef nodeRef = JCRNodeRef.getNodeRef(newAlfNode);
permService.setInheritParentPermissions(nodeRef, true);

Je ne suis pas sûr que le droit Write soit obligatoire. Peut être que le droit write_content suffit. Je testerai plus tard. En tout cas ça fonctionne comme ça. Tous les utilisateurs sauf le Guest peuvent entamer une discussion sur n'importe quel document ou dossier se trouvant en dessous de mon root.

Merci pour ton aide, ça m'a été très utile Smiley Happy

jayjayecl
Confirmed Champ
Confirmed Champ
Pas de quoi.
Juste une question : pourquoi avoir changé les droits sur le noed racine avec du code et non pas avec l'interface d'Alfresco ?

ethan
Champ in-the-making
Champ in-the-making
Le noeud root est crée via le code également, donc je me suis dit: "autant tout faire au même endroit". Je travaille sur la simplification de l'interface d'alfresco pour des clients à qui je dois fournir une installation d'alfresco avec tous leurs documents pré-intégrés. Ils ne devront pas avoir besoin de toucher à l'interface d'administration. C'est pourquoi j'ai fais les modifications de permissions dans le code.