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 liens :

var ConsoleHelper = Java.type('org.ametys.workspaces.repository.ConsoleHelper'); 

// 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 oldUsersNodes = parentNode.getNodes(); 
while (oldUsersNodes.hasNext()) 
{ 
var oldUserNode = oldUsersNodes.next();
var userPopulation = oldUserNode.getProperty("ametys:population").getString();

if (!usersNode.hasNode(userPopulation))
{
usersNode.addNode(userPopulation, "nt:unstructured"); 
}

var popNode = usersNode.getNode(userPopulation);
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 oldGroupsNodes = parentNode.getNodes(); 
while (oldGroupsNodes.hasNext()) 
{
var oldGroupNode = oldGroupsNodes.next(); 
var groupDirectory = oldGroupNode.getProperty("ametys:groupDirectory").getString(); 

if (!groupsNode.hasNode(groupDirectory))
{
groupsNode.addNode(groupDirectory, "nt:unstructured"); 
}

var dirNode = groupsNode.getNode(groupDirectory); 

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