<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Conditionner les actions possibles via CIFS ou Webdav in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172826#M126011</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Bonjour,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Je travaille actuellement sur une application basée sur Alfresco 3.2r Community. Dans cette application, j'ai modifié le modèle de telle manière qu'un statut est associé à chaque document : il s'agit d'une propriété pouvant prendre différentes valeurs (Brouillon, Approuvé, Obsolète, …).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans l'application, j'ai conditionné la possibilité de réaliser différentes actions en fonction de la valeur du statut (via l'utilisation de classes héritant de BaseActionEvaluator). Ainsi, un document au statut Approuvé ou Obsolète n'est pas modifiable à moins d'en créer une nouvelle version (le versioning est activé sur tous les documents) : les actions permettant de modifier un document sont donc masquées dans ce cas.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Mon problème est que les utilisateurs peuvent également utiliser CIFS et Webdav pour éditer les documents.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Est-il possible de conditionner les actions réalisées via CIFS ou Webdav ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Plus précisément et en prenant un exemple concret :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;J'ai un document à l'état Approuvé dans mon application : les actions permettant de modifier ce document (par exemple "Mettre à jour") n'apparaissent pas grâce au evaluators. Seule l'action "Editer hors ligne" apparaît et va obliger mon utilisateur à créer une nouvelle version.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Le problème est que, si je passe par CIFS, rien ne m'empêche d'ouvrir ce document, de le modifier et de le sauvegarder alors que cela ne devrait pas être possible compte-tenu de son statut.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans ce cas précis, lors de l'ouverture d'un document via CIFS ou Webdav, une solution pourrait être par exemple d'ouvrir le document en lecture seule s'il présente un statut Approuvé ou Obsolète et de l'ouvrir en écriture s'il est au statut Brouillon. Cela est-il possible ? Si oui, comment peut-on s'y prendre pour le développer ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Une autre piste : peut-on configurer CIFS pour que tous les documents soient ouverts en lecture seule par défaut et développer une nouvelle "action" (semblables au fichier .exe disponibles dans les répertoires lors d'un accès par CIFS) permettant d'ouvrir un document en écriture ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci d'avance pour votre aide.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 15 Jul 2010 16:06:51 GMT</pubDate>
    <dc:creator>mlagneaux</dc:creator>
    <dc:date>2010-07-15T16:06:51Z</dc:date>
    <item>
      <title>Conditionner les actions possibles via CIFS ou Webdav</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172826#M126011</link>
      <description>Bonjour,Je travaille actuellement sur une application basée sur Alfresco 3.2r Community. Dans cette application, j'ai modifié le modèle de telle manière qu'un statut est associé à chaque document : il s'agit d'une propriété pouvant prendre différentes valeurs (Brouillon, Approuvé, Obsolète, …).Dans</description>
      <pubDate>Thu, 15 Jul 2010 16:06:51 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172826#M126011</guid>
      <dc:creator>mlagneaux</dc:creator>
      <dc:date>2010-07-15T16:06:51Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionner les actions possibles via CIFS ou Webdav</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172827#M126012</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Pour rendre les documents en lecture seule par défaut, c'est possible, voir ici : &lt;/SPAN&gt;&lt;A href="http://wiki.alfresco.com/wiki/File_Server_ACLs" rel="nofollow noopener noreferrer"&gt;http://wiki.alfresco.com/wiki/File_Server_ACLs&lt;/A&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Pour le reste, ce sera probablement du développement, peut être via les DynamicAuthority, ou les PolicyComponent qui vous permettra de binder des comportements particuliers pour certains types d'évenement (voir NodeServicePolicies, ContentServicePolicies, ..), et sur certains QName.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Jul 2010 08:41:15 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172827#M126012</guid>
      <dc:creator>rguinot</dc:creator>
      <dc:date>2010-07-20T08:41:15Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionner les actions possibles via CIFS ou Webdav</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172828#M126013</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Tout d'abord merci pour ces pistes. Je ne connaissais pas les dynamicAuthority.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dans un premier temps, j'ai pu effectuer le test suivant :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- J'ai mis en commentaires le permissionGroup WriteContent dans le permissionGroup Write. Ainsi, les collaborateurs ne peuvent plus modifier le contenu d'un noeud par défaut ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;permissionGroup name="Write" expose="true" allowFullControl="false"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;includePermissionGroup type="sys:base" permissionGroup="WriteProperties"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;includePermissionGroup type="sys:base" permissionGroup="WriteContent"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/permissionGroup&amp;gt;&amp;nbsp; &lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;- J'ai créé une dynamicAuthority qui donne l'authority ROLE_WRITER_ACCORDING_STATUS en fonction du statut du document. Cette authority dispose du permissionGroup WriteContent&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;lt;globalPermission permission="WriteContent" authority="ROLE_WRITER_ACCORDING_STATUS" /&amp;gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Ci-dessous le code de la méthode hasAuthority de ma classe :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public boolean hasAuthority(final NodeRef nodeRef, String userName) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("WriterAccordingStatusDynamicAuthority#hasAuthority("+nodeRef+", "+userName+")");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return AuthenticationUtil.runAs(new RunAsWork&amp;lt;Boolean&amp;gt;(){&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Boolean doWork() throws Exception&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean hasAuthority = true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;// find its type so we can see if it's a node we are interested in&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QName type = nodeService.getType(nodeRef);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// make sure the type is defined in the data dictionary&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TypeDefinition typeDef = dictionaryService.getType(type);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (typeDef != null)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Look for Content node&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (dictionaryService.isSubClass(type, ContentModel.TYPE_CONTENT)){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String name = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("WriterAccordingStatusDynamicAuthority#hasAuthority =&amp;gt; Type CONTENT : "+name);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Get the status of the node&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String status = (String)nodeService.getProperty(nodeRef, CeaModel.PROP_STATUS);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// If the status is different from draft or approval in progress, the authority is denied&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!CeaModel.STATUS_DRAFT.equals(status) &amp;amp;&amp;amp; !CeaModel.STATUS_APPROVAL_IN_PROGRESS.equals(status)){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hasAuthority = false;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("WriterAccordingStatusDynamicAuthority#hasAuthority =&amp;gt; "+hasAuthority);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return hasAuthority;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }}, AuthenticationUtil.getSystemUserName());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Cela fonctionne bien comme je voulais. Cela me permet en effet de donner le droit de modifier le contenu d'un noeud uniquement si le statut du noeud le permet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Je bloque maintenant sur le point suivant : cette solution donne la permission WriteContent à l'utilisateur même si celui-ci n'est que Lecteur du noeud.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;J'ai essayé de solutionner ce problème de la façon suivante :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- J'ai décommenté le permissionGroup WriteContent dans le permissionGroup Write.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- J'ai créé une nouvelle permission et le permissionGroup associé :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;permissionGroup name="WriteAccordingStatus" expose="false" allowFullControl="false" /&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;permission name="_WriteAccordingStatus" expose="false"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;grantedToGroup permissionGroup="WriteAccordingStatus" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/permission&amp;gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;- J'ai modifié la permission _WriteContent. J'ai ajouté un tag requiredPermission :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;permission name="_WriteContent" expose="false"&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;grantedToGroup permissionGroup="WriteContent" /&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!– Commented out parent permission check …&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requiredPermission on="parent" name="_ReadChildren" implies="false"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; –&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requiredPermission on="node" name="_WriteAccordingStatus" implies="false"/&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/permission&amp;gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;- J'ai mis en commentaires ma globalPermission sur l'authority ROLE_WRITER_ACCORDING_STATUS.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Avec ce paramétrage, ma permission _WriteAccordingStatus n'étant jamais accordée, je pensais qu'aucun de mes users n'aurait la permission WriteContent (du fait de la requiredPermission). Or, ce n'est pas le cas.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Je pense avoir raté quelque chose concernant le paramétrage des permissions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Comment faut-il procéder pour donner le droit WriteContent uniquement aux utilisateurs Collaborateurs ayant un permissionGroup que j'affecte avec ma dynamicAuthority ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;D'autre part, je me pose une question concernant les administrateurs, les coordinateurs et le propriétaire d'un noeud. Dans la configuration, ils disposent tous les 3 de la permission FullControl. A terme, j'aurais besoin de leur enlever le droit WriteContent. La 1ère solution qui me vient à l'esprit est de définir un permissionGroup FullControlWithoutWriteContent où je reprends le permissionGroup Collaborator (que j'aurais modifié suite à ma 1ère question) et j'y ajoute tous les permissions restantes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Y a-t-il une façon plus simple de faire ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci d'avance pour votre aide sur ce sujet.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 Jul 2010 09:57:16 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172828#M126013</guid>
      <dc:creator>mlagneaux</dc:creator>
      <dc:date>2010-07-23T09:57:16Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionner les actions possibles via CIFS ou Webdav</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172829#M126014</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Tout d'abord, via CIFS, un document est ouvert en écriture si l'utilisateur dispose de la permission Write (et non simplement WriteContent comme je le pensais).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;J'ai pu répondre à mon problème de la façon suivante :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- J'ai modifié ma dynamicAuthority : en plus de contrôler le statut du document, elle vérifie également que l'utilisateur est soit Collaborateur, soit Coordinateur soit Propriétaire. Je me suis basé pour cela sur l'exemple fourni dans le post suivant du forum Alfresco anglais.&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://forums.alfresco.com/en/viewtopic.php?f=47&amp;amp;t=17436&amp;amp;p=60903&amp;amp;hilit=dynamicAuthority#p60903" rel="nofollow noopener noreferrer"&gt;http://forums.alfresco.com/en/viewtopic.php?f=47&amp;amp;t=17436&amp;amp;p=60903&amp;amp;hilit=dynamicAuthority#p60903&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Au niveau de la définition des permissions: &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;L'authority donnée par ma classe dynamicAuthority donne la permissions Write à l'utilisateur.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cette permission Write n'inclut plus que la permission WriteContent et ne fait plus partie de la permission Collaborateur. J'ai par contre inclus la permission WriteProperties dans la permission Collaborateur.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;D'autre part, j'ai défini une nouvelle permissions CustomFullControl qui inclut Collborateur et toutes les autres permissions restantes (Delete, Execute, ChangePermissions, …).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;J'ai également modifié la permission Coordinateur : celle-ci inclut maintenant la permission CustomFullControl et j'ai passé allowFullControl à false.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Pour finir, la globalPermission associée à ROLE_OWNER donne maintenant la permission CustomFullControl.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Au niveau de certaines JSP et certaines actions, j'ai remplacé le permissionEvaluator sur Write par un permissionEvaluator sur WriteProperties.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Après pas mal de tests, cela semble fonctionner correctement. Je pense n'avoir rien cassé avec toutes mes modifs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Merci à rguinot de m'avoir orienté sur les dynamicAuthority.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jul 2010 14:48:18 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172829#M126014</guid>
      <dc:creator>mlagneaux</dc:creator>
      <dc:date>2010-07-29T14:48:18Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionner les actions possibles via CIFS ou Webdav</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172830#M126015</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Cool !&amp;nbsp; Si vous souhaitez packager et contribuer votre code pour la communauté, n'hésitez pas à créer un projet sur la forge &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt; (forge.alfresco.com)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Jul 2010 15:02:53 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/conditionner-les-actions-possibles-via-cifs-ou-webdav/m-p/172830#M126015</guid>
      <dc:creator>rguinot</dc:creator>
      <dc:date>2010-07-29T15:02:53Z</dc:date>
    </item>
  </channel>
</rss>

