Règle pour lancer un Script

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

Règle pour lancer un Script

Salut, je voudrai savoir pourquoi un utilisateur qui a cette liste de droit suivante, n'a pas le droit de lancer un script qui modifie les droits sur un doc ?

Liste des permissions :
<permissionGroup name="MonGroupe" allowFullControl="false" expose="true" >
          <includePermissionGroup permissionGroup="Read" type="sys:base" />
          <includePermissionGroup type="sys:base" permissionGroup="Write"/>
          <includePermissionGroup type="cm:lockable" permissionGroup="CheckOut"/>
          <includePermissionGroup permissionGroup="AddChildren" type="sys:base"/>
          <includePermissionGroup permissionGroup="ReadPermissions" type="sys:base" />
          <includePermissionGroup permissionGroup="ChangePermissions" type="sys:base" /> 
      </permissionGroup>

Et voici mon script, ce ne sont que les actions principales, je pense que c'est de la que vient le problème :
document.setPermission("Consumer", "EVERYONE");
document.setPermission("Collaborator", "EDF MOA");
document.setPermission("Delete","EDF MOA);


Merci de votre aide !
4 Replies
thomasberment
Member II

Re: Règle pour lancer un Script

Pour me répondre un peu et vous aider à cerner le problème avec moi, j'ai fait une batterie de test sur mon script.

Il en ressort que même un utilisateur de type Coordinator n'a pas le droit d'exécuter mon script. Alors là, soit c'est moi qui fait une grosse erreur soit Alfresco est très sécurisé au point de ne rien permettre. Par ailleurs j'ai vérifier, l'admin lui est capable de lancer le script.

En ce qui concerne la règle, rien de plus simple, elle se lance lorsqu'un contenu est modifié. Elle lance mon script et ne fait rien d'autre. Merci de votre aide, là je sais plus quoi faire …

Pour plus de détails, je vous donne mon script :
//Nombre de ligne
var files = new Array(18);
//Nombre de colonne
for(var i=0;i<files.length;i++)
{
    files[i]=new Array(varFiles.length + 2);
}

//Liste des droits (groupe utilisateur//type utilisateur//classification du document//statut du document)
//On peut ajouter autant de ligne que possible, attention au nombre de ligne déclarée dans la variable "files"
files[0] = ["EDF MOA","Collaborator","SFG","Travail"];
files[1] = ["EDF MOA","Consumer","SFG","En relecture"];
files[2] = ["EDF MOA","Collaborator","SFG","Relu"];
files[3] = ["EVERYONE","Consumer","SFG","En validation"];
files[4] = ["EDF MOA","Collaborator","SFG","Validé"];
files[5] = ["EVERYONE","Consumer","SFG","Validé"];

files[6] = ["TMA","Collaborator","SFD","Travail"];
files[7] = ["TMA","Consumer","SFD","En relecture"];
files[8] = ["TMA","Collaborator","SFD","Relu"];
files[9] = ["EVERYONE","Consumer","SFD","En validation"];
files[10] = ["TMA","Collaborator","SFD","Validé"];
files[11] = ["EVERYONE","Consumer","SFD","Validé"];

files[12] = ["TMA","Collaborator","ETUTECH","Travail"];
files[13] = ["TMA","Consumer","ETUTECH","En relecture"];
files[14] = ["TMA","Collaborator","ETUTECH","Relu"];
files[15] = ["EVERYONE","Consumer","ETUTECH","En validation"];
files[16] = ["TMA","Collaborator","ETUTECH","Validé"];
files[17] = ["EVERYONE","Consumer","ETUTECH","Validé"];

//Pour les fichiers
var propertiesFiles = new Array(varFiles.length);
for(var i=0;i<varFiles.length;i++)
{
    propertiesFiles[i] = document.properties[varFiles[i]];
   
}

//Vérification si le document herite des permissions "Parent" si oui alors on lui enleve
if (document.inheritsPermissions()==true)
{
  document.setInheritsPermissions(false);
}

//Boucle pour parcourir toutes les déclarations
for(var i=0;i<files.length;i++)
{
    var condition = true;
    for(var j=0;j<varFiles.length;j++)
    {
        if (propertiesFiles[j] != files[i][j+2])
        {
            condition = false;
        }
    }
    if (condition != false)
    {
        document.setPermission(files[i][1],files[i][0]);
    }
    if ((files[i][3] == "Travail") && (document.hasPermission("Delete") == false))
    {
        document.setPermission("Delete",files[i][0]);
    }
    if ((files[i][3] != "Travail") && (document.hasPermission("Delete") == true))
    {
        document.removePermission("Delete",files[i][0]);
    }
}



Screen de Tomcat avec l'erreur :

[img]http://nsa14.casimages.com/img/2010/03/15/mini_100315063622480680.jpg[/img]
thomasberment
Member II

Re: Règle pour lancer un Script

Personne ne sait pourquoi un non admin ne peut pas lancer un script qui touche aux permissions ou aux propriétés d'un document ??
cleseach
Active Member II

Re: Règle pour lancer un Script

Bonjour,

Personne ne sait pourquoi un non admin ne peut pas lancer un script qui touche aux permissions ou aux propriétés d'un document ??

Attention a bien identifier votre problème : votre difficulté ne vient pas du lancement du script, mais des droits de l'utilisateur pour modifier les permissions d'un document. C'est d'ailleurs exactement ce qu'on voit dans votre log : le script est démarré mais est en échec à cause des permissions.

Pour que vous puissiez isoler votre problème finement, voici ce que je vous propose :
  1. Ecrivez sur le papier et en français votre algorithme

  2. Connectez-vous avec le profil qui devra exécuter le script

  3. Déroulez votre algorithme à la main en validant bien chacune de vos actions avant de passer à la suivante.
Si tout se passe bien, ajoutez des traces à l'exécution de votre script pour identifier l'instruction posant problème.

En lisant votre script, les éléments suivants m'ont semblé étranges :
  • Appels à la variable varFiles qui ne semblent pas être définie.

  • Suppression de l'héritage des permissions avant le traitement des permissions propres au document.
Cordialement,
Charles Le Seac'h
thomasberment
Member II

Re: Règle pour lancer un Script

Pour vous répondre, j'ai effectivement fait une erreur au niveau de mon code. Je l'ai modifié et mon script se lance bien, à une bidouille près.

Car il y a un résultat qui me surprend toujours, c'est que un script custom (ajouté dans Alfresco) ne se lance pas si la personne n'est pas admin. Ma solution consiste à mettre à jour un script du système avec mon script, comme ça Alfresco croit que c'est le sien alors que c'est le mien. Je continue dans cette direction parce que je ne vois pas comment faire autrement.

Merci