Arreglar Sites de Alfresco tras crear nuevos Roles-Permissions

La documentación oficial de Alfresco explica en su wiki el modo de crear roles personalizados y claramente recomiendan hacerlo siempre antes de crear los Sites, con una instalación limpia. Esto es debido que si se crean nuevos roles con Sites ya creados, estos intentarán buscar esa nueva autoridad sin éxito y muchas de las funcionalidades de Share fallarán:

...
...
...
Caused by: org.alfresco.repo.security.authority.UnknownAuthorityException:
01110111 An authority was not found for CUSTOM_Group at org.alfresco.repo.security.authority.AuthorityDAOImpl.getContainedAuthorities(AuthorityDAOImpl.java
at 
...
...
...

Pero si es tarde, y tenemos que hacerlo en un entorno activo existe la posibilidad de solucionarlo creando un script para  añadir el Role Group a cada Site existente. Existen opciones en Java creadas a partir de la Issue ALF-8149 de Alfresco y otras en JavaScript como la de los foros de Alfresco:

var allSites = siteService.listSites(null, null, 0);

for (var siteIndex = 0; siteIndex < allSites.length; siteIndex++) {
   createAuthorities(allSites[siteIndex].shortName, ["YourCustomContributor", "YourCustomConsumer"]);
}

function createAuthorities(siteName, rolesList) {
   var prefix = "site_" + siteName + "_";
   for (var roleIndex = 0; roleIndex < rolesList.length; roleIndex++) {
      var groupName = prefix + rolesList[roleIndex];

      if (people.getGroup("GROUP_" + groupName) == null) {
         people.createGroup(groupName);
      }
   }
}

Personalmente he probado esta última y funciona correctamente, simplemente especificad los roles personalizados entre comillas en donde indica “YourCustomContributor” y “YourCustomConsumer” (si es sólo uno, pues una única vez). Lo subís a Alfresco con extensión .js de JavaScript y lo ejecutáis, ya sea desde la interfaz Share con el plugin Javascript Console o desde la interfaz antigua Alfresco. Esta última opción se realiza del siguiente modo:

Pinchamos en “View Details” del Script y seleccionamos “Run Action“:

Ejecutar JavaScript Alfresco

Después seleccionamos “Execute Script” y en la siguiente acción “Click to set values and add to list” simplemente seleccionamos nuestro script en “Select a script to execute:” y lo ejecutamos:

Ejecutar JavaScript Alfresco

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *