Tout d'abord :

  • Eteindre le serveur
  • Supprimer le custom-nodetypes.xml
  • Redémarrer le serveur

Service annuaire de lien

Le service a été migré, les paramètres sont donc typés et il faut passer le script suivant :

function convertStringPropertyToBoolean(node, propertyName)         
 {         
    var hasChanged = false;         
      if (node.hasProperty(propertyName))         
      {         
          var property = node.getProperty(propertyName);         
         if (property.getType() == 1) // 1 is for string         
         {         
             var valueAsString = property.getString();         
             property.remove();         
             if (valueAsString == "true" || valueAsString == "false")         
             {         
                 node['setProperty(java.lang.String, boolean)'](propertyName, valueAsString == "true");         
             }         
             hasChanged = true;         
         }             
     }         
         
     return hasChanged;         
 }         
         
 var qm = session.getWorkspace().getQueryManager();         
 var query = qm.createQuery("//element(*, ametys:zoneItem)[@ametys-internal:type = 'SERVICE' and @ametys-internal:service = 'org.ametys.plugins.linkdirectory.DirectoryService']", javax.jcr.query.Query.XPATH);         
 var nodes = query.execute().getNodes();         
 var count = 0;         
 while (nodes.hasNext())         
 {         
     var node = nodes.nextNode().getNode("ametys:service_parameters");         
     var hasChanges = convertStringPropertyToBoolean(node, "ametys:displayUserLinks");         
     hasChanges = convertStringPropertyToBoolean(node, "ametys:configurable") || hasChanges;         
     hasChanges = convertStringPropertyToBoolean(node, "ametys:showUrl") || hasChanges;         
     hasChanges = convertStringPropertyToBoolean(node, "ametys:showThemes") || hasChanges;         
         
     if (hasChanges)         
     {         
         count++;         
     }            
 }         
         
 session.save();         
 print(count + " updated link directory services.");            

Reconstruire le workspace Live pour appliquer ces modifications aux pages publiées.

Limitation d'accès

La limitation d'accès aux liens s'appuie désormais sur la nouvelle gestion des droits :

  • Un lien public est un lien pour laquelle le profil "Lecteur" est autorisé pour Anonymous
  • Un lien privé est un lien pour laquelle le profil "Lecteur" est exclu pour Anonymous


Exécutez le script suivant, en modifiant la valeur des variables POPULATION_ID et GROUP_DIRECTORY selon vos propres données, pour migrer vos enquêtes :

var ConsoleHelper = Java.type('org.ametys.workspaces.repository.ConsoleHelper');         
         
// A PERSONNALISER         
var POPULATION_ID = 'ametys_demo_users';         
var GROUP_DIRECTORY = 'sql-groups';         
         
// Profil Lecteur       
var readerProfile = Java.to(['READER'], "java.lang.String[]")       
       
var query = session.getWorkspace().getQueryManager().createQuery("//element(*, ametys:directoryLink)", javax.jcr.query.Query.XPATH);       
var nodes = query.execute().getNodes();       
       
var count = 0;       
while (nodes.hasNext())       
{       
    var node = nodes.next();  
    var hasChanged = false;  
    if (!node.hasProperty("ametys-internal:status"))  
    {  
        node.setProperty("ametys-internal:status", "USUAL");  
        hasChanged = true;  
    }       
    if (!node.hasNode('ametys-internal:acl'))       
    {       
        var aclNode = node.addNode("ametys-internal:acl", "ametys:acl");       
       
        var grantAnyUser = node.hasProperty("ametys-internal:grant-any-user") ? node.getProperty("ametys-internal:grant-any-user").getBoolean() : false;       
        if (grantAnyUser)       
        {       
            ConsoleHelper.setProperty(aclNode, "ametys:denied-anonymous-profiles", readerProfile );       
        }       
        else       
        {       
            // Set ACL for anonymous       
            ConsoleHelper.setProperty(aclNode, "ametys:allowed-anonymous-profiles", readerProfile); 
 ConsoleHelper.setProperty(aclNode, "ametys:allowed-any-connected-profiles", readerProfile);     
        }       

        if (node.hasProperty("ametys-internal:grant-any-user"))       
        {       
            node.getProperty("ametys-internal:grant-any-user").remove();       
        }       
       
        if (node.hasNode('ametys-internal:granted-users'))       
        {       
            // Migrate ACL for users       
            var parentNode = node.getNode("ametys-internal:granted-users");       

            var usersNode = aclNode.addNode("users", "nt:unstructured");       
            var popNode = usersNode.addNode(POPULATION_ID, "nt:unstructured");       
       
            var oldUsersNodes = parentNode.getNodes();       
            while (oldUsersNodes.hasNext())       
            {       
                var oldUserNode = oldUsersNodes.next();       
                var login = oldUserNode.getProperty("ametys:login").getString();       
                var userNode = popNode.addNode(login, "ametys:acl-user");       
                ConsoleHelper.setProperty(userNode, "ametys:allowed-profiles", readerProfile);       
            }       
            parentNode.remove();       
        }       

        if (node.hasNode('ametys-internal:granted-groups'))       
        {       
            // Migrate ACL for groups       
            var parentNode = node.getNode("ametys-internal:granted-groups");       

            var groupsNode = aclNode.addNode("groups", "nt:unstructured");       
            var dirNode = groupsNode.addNode(GROUP_DIRECTORY, "nt:unstructured");       
       
            var oldGroupsNodes = parentNode.getNodes();       
            while (oldGroupsNodes.hasNext())       
            {       
                var oldGroupNode = oldGroupsNodes.next();       
                var groupId = oldGroupNode.getProperty("ametys:groupId").getString();       
                var gpNode = dirNode.addNode(groupId, "ametys:acl-group");       
                ConsoleHelper.setProperty(gpNode, "ametys:allowed-profiles", readerProfile);       
            }       
            parentNode.remove();       
       
        }  
        hasChanged = true;  
    }  

    if (hasChanged)  
    {  
        session.save();  
        count++;  
    }       
}       
print(count + " links have been updated");       
Retour en haut