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