PERMISSION ecriture

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

PERMISSION ecriture

Bonjour,

J'ai une application Alfresco, je l'ai modifié pour que je puisse creer des utilisateurs via un fichier CSV.
Chaque utilisateur que je créais passe par cette fonction:
   public String createUser(Map<QName, Serializable> props, String userName) {
        NodeRef newPerson = this.personService.createPerson(props);

        this.permissionService.setPermission(newPerson, userName, this.permissionService.getAllPermission(), true);
       
        String password = AuthenticationUtils.getUserPassword(userName);
        this.authenticationService.createAuthentication(userName, password.toCharArray());
       
        this.nodeService.setType(newPerson, DecathlonModel.TYPE_USER);
        this.nodeService.setProperty(newPerson, DecathlonModel.PROP_DROITS, new ArrayList<String>());
        return password;
       
       
   }
J'aimerais que mes utilisateurs aient les droits administrateurs, getAllPermission ne le fais pas apparemment.
Comment puis je faire?
Car aprés je me retrouve avec des utilisateurs qui n'ont pas des droits d'écriture sur les documents, alors que l'administrateur si.

Erreur généré, lorsque je fais ( this.lockService.lock(document, LockType.WRITE_LOCK); ):
javax.faces.el.EvaluationException: Exception while invoking expression #{DocumentDetailsDialog.startCorrection}
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156)
at javax.faces.component.UICommand.broadcast(UICommand.java:89)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

Si vous avez une idée je suis preneur.
Merci
5 Replies
rivarola
Active Member

Re: PERMISSION ecriture

Bonjour,

Il vaudrait mieux utiliser quelque chose comme :
this.permissionService.setPermission(newPerson, userName, PermissionService.FULL_CONTROL, true);

ou ajouter l'utilisateur dans le groupe des administrateurs.
goofy35
Member II

Re: PERMISSION ecriture

Merci, je vais tenter Smiley Wink
goofy35
Member II

Re: PERMISSION ecriture

Non je me retrouve toujours avec l'erreur :
caused by:
org.alfresco.repo.security.permissions.AccessDeniedException: Accès interdit. Vous n'avez pas la permission de réaliser cette opération.
caused by:
net.sf.acegisecurity.AccessDeniedException: Access is denied.

Lorsque je fais appel à des fonctions de LockService, particuliérement:
this.lockService.lock(nodeRef, LockType.WRITE_LOCK);

Alors que quand je me connecte avec le compte admin, je n'ai aucun souci.
rivarola
Active Member

Re: PERMISSION ecriture

Je n'avais pas bien lu cette ligne :
this.permissionService.setPermission(newPerson, userName, this.permissionService.getAllPermission(), true);

En fait ça donne tous les droits sur le noeud cmSmiley Tongueerson, pas sur des espaces ou des documents. On peut faire la même chose sur le noeud correspondant à Company Home pour donner tous les droits sur les contenus aux nouveaux utilisateurs (remplacer newPerson par le NodeRef du CH). Mais ça ne fait pas de l'utilisateur un administrateur.
Pour en faire vraiment un administrateur, au lieu de faire appel au permissionService, il faut le mettre dans le groupe GROUP_ALFRESCO_ADMINISTRATORS via le service AuthorityService :
this.authorityService.addAuthority("GROUP_ALFRESCO_ADMINISTRATORS", userName);
goofy35
Member II

Re: PERMISSION ecriture

Merci Philippe.

Tu m'as mis sur la piste. en me disant:
En fait ça donne tous les droits sur le noeud cmSmiley Tongueerson, pas sur des espaces ou des documents.
Effectivement j'ai créé un fichier de configuration pour mon espace ou les documents sont rangés (document-space.xml)
Et à l'interieur j'avais vite fais définis des droits
<view:acl view:inherit="false">
   <view:ace view:access="ALLOWED">
      <view:authority>GROUP_EVERYONE</view:authority>
      <view:permission>Consumer</view:permission>
   </view:ace>
</view:acl>

J'ai donc passé tout simplement mes actions en :
<view:permission>All</view:permission>
Dans mon fichier de config d'espace.

Et ça passe nikel.

Merci encore