cancel
Showing results for 
Search instead for 
Did you mean: 

Permissions dépendant du type

akinder
Champ in-the-making
Champ in-the-making
Bonjour à tous

Dans le cadre de mon projet, j'aimerais associer des rôles particuliers à mes groupes. En effet j'aimerais par exemple permettre aux membres du groupe d'accéder en lecture à tous les types de fichiers (cm:content, cm:folder …) mais autoriser l'accès en mode écriture de ces fichiers.

(J'utilise un Alfresco 3.4)

Dans un premier temps j'ai ajouté un rôle testPermission dans le fichier permissionDefinition.xml (ci dessous les ajouts apportés au fichier) :

<permissionSet type="cm:cmobject" expose="selected">
    …….
    <permissionGroup name="testPermission" type="cm:cmobject" expose="true" >
         <includePermissionGroup permissionGroup="Read" type="sys:base" />
    </permissionGroup>
</permissionSet>

<permissionSet type="cm:folder" expose="selected">
    ……
    <permissionGroup name="testPermission" extends="true" type="cm:cmobject" expose="true" />
</permissionSet>

<permissionSet type="cm:content" expose="selected">
    …….
    <permissionGroup name="testPermission" extends="true" type="cm:cmobject" expose="true" >
         <includePermissionGroup permissionGroup="Read" type="sys:base" />
         <includePermissionGroup permissionGroup="Write" type="sys:base" />
    </permissionGroup>
</permissionSet>

Dans un second temps j'ai créé un nouveau groupe groupTestPermission dans sitePermissionDefinition.xml reprenant ces mêmes permissions.

   <permissionSet type="st:site" expose="selected">
   
      ….
   
      <permissionGroup name="testPermissionGroup">
         <includePermissionGroup permissionGroup="testPermission" type="cm:cmobject"/>
         <includePermissionGroup permissionGroup="testPermission" type="cm:content"/>
      </permissionGroup>      
   </permissionSet>

Quand j'applique ces modifications (sur une base saine, un site neuf sur un alfresco neuf), il s'avère que les membres du groupe ont accès en mode écriture sur tous les types de fichiers y compris les folders. Ce qui n'est pas le résultat que j'attendais (je ne voulais qu'ils aient accès en écriture qu'aux folders).

J'ai cherché sur internet (et sur ce forum), et je n'ai pas vue de réponse à ce problème. J'ai vu une réponse qui implique de devoir développer un bout de code Java, mais j'aimerais tant que possible profiter des fichiers de configuration XML d'Alfresco sans avoir à développer à coté.

Donc ma question est : est il possible d'affecter des permissions particulières en fonction du type ? Si oui, où est ce que mon raisonnement est mauvais ?
4 REPLIES 4

rivarola
Champ on-the-rise
Champ on-the-rise
J'ai buté sur le même point il y a environ un an. J'ai fini par demander au support Alfresco et ils m'ont répondu que ce n'était pas possible  Smiley Sad

akinder
Champ in-the-making
Champ in-the-making
Arf… pas de chance alors.
Je vais devoir partir sur une autre piste. Merci en tout cas pour ta réponse. Au moins je sais que ce n'est pas possible de le faire.

bertrandf
Champ on-the-rise
Champ on-the-rise
Si c'est pour gérer les actions visibles sur un dossier ou un fichier dans Share il est possible de contourner votre problème.

Si vous regardez, dans la webapp Share, les fichiers documentlist.get.config.xml et repo-documentlist.get.config.xml, pour chaque action (sur le fichiers et les dossiers), on peut définir des permissions :

<action type="action-link" id="onActionUploadNewVersion" permission="edit" label="actions.document.upload-new-version" />
Ici, on voit qu'il faut avoir la permission "edit" pour pouvoir uploader une nouvelle version sur un document.

Libre a vous de définir de nouvelles permissions.
Vous pouvez définir vos permissions en fonction de ce que vous voulez : arborescence particulière, appartenance à groupe, nom de l'utilisateur, …

Pour définir une permission, je vous laisse étudier le fichier evaluator.lib.js (coté webapp Alfresco).
C'est assez simple, il suffit d'attribuer votre permission quand la condition que vous avez définie est respectée.
Par exemple :
permissions["ma-permission"] = true;

Imaginons que vous voulez que seul l'utilisateur toto puisse éditer les métadonnée d'un dossier :
Fichier : evaluator.lib.js
case "folder":
  // […]

  if (person.properties.userName == "toto") {
    permissions["edit-metadata"] = true;
  }

  break;

Fichier : documentlist.get.config.xml et repo-documentlist.get.config.xml
<actionSet id="folder">
   <action type="simple-link" id="onActionMetadata" permission="edit-metdata" href="{folderDetailsUrl}" label="actions.folder.view-metadata" />
   <!– […] –>
</actionSet>

En espérant avoir compris vos besoins.
Cordialement.

akinder
Champ in-the-making
Champ in-the-making
Merci de votre réponse

Utiliser des permissions personnalisées était ma première idée. Cependant j'y avais (temporairement) renoncé, car je comptais à terme utiliser plusieurs autres types et du coup je risquais d'avoir beaucoup de permissions, et pour les tests je ne trouvais pas ça terrible.
Mais au final c'est ce que je risque d'utiliser, merci de me l'avoir rappelé.  :wink: