Hola,
¿Existe alguna forma de personalizar el header de share (Aikau) de forma que solamente puedan acceder a ciertos elementos del menu el rol SiteManager además del usuario admin?
Nos gustaría integrar a SiteManager en el módulo desplegable que ya nos funciona usando:
if (!user.isAdmin){ widgetUtils.deleteObjectFromArray(model.jsonModel, "id", "HEADER_MY_FILES");}
Con el módulo desplegado, solo el administrador puede ver "Mis Ficheros". Sin embargo, hemos buscado y probado multitud de opciones para los administradores de sitio pero no conseguimos "dar con la tecla".
Os agradeceriamos vuestra opinión y experiencia al respecto.
Gracias por adelantado.
No hay ninguna variable en la que indique si un usuario es SiteManager o no, así que tienes que calcularlo.
Puedes incluir un código parecido al siguiente en tu personalización:
// Call the repo for sites the user is a member of
var sites = [];
var result = remote.call("/api/people/" + encodeURIComponent(user.name) + "/sites");
model.role = "Undefined";
if (result.status == 200)
{
var managers, i, ii, j, jj;
// Create javascript objects from the server response
sites = eval('(' + result + ')');
if (sites.length > 0)
{
for (var index = 0; index < sites.length; index++)
{
site = sites[index];
// Is current user a Site Manager for this site?
site.isSiteManager = false;
if (site.siteManagers)
{
managers = site.siteManagers;
for (j = 0, jj = managers.length; j < jj; j++)
{
if (managers[j] == user.name)
{
model.role = "SiteManager";
break;
}
}
}
}
}
}
Lo he dejado por aquí por si es útil para otra gente: https://gist.github.com/angelborroy-ks/7a2addb9df59f4036a480c8760c95e9b
El problema es que la API de Alfresco no devuelve todos los grupos a los que pertenece un usuario, por eso hay que realizarlo de esta manera.
Hola Angel,
la verdad es que su ayuda nos ha servido de mucho.
Por si le sirve de ayuda a otros comentar que:
Adicionalmente al nuevo script que nos ha facilitado, hemos comprobado que añadiendo el evaluador "group.module.evaluator" en el panel de deploy del módulo, con propiedad key=groups y valor "nombre de grupo" nos da como resultado un control aun mas afinado.
La suma de ambos es lo que necesitábamos.
Muchas gracias por su tiempo.
Ese es el mismo enfoque que se aplica en este addon https://github.com/keensoft/alfresco-simplify-share
Resulta útil cuando tienes una lista concreta de grupos que puedes incluir en el evaluador. Sin embargo, cuando se trata de encontrar roles de sitios (aunque finalmente sean modelados como un grupo más) la lista puede ser dinámica. Esto hace necesario utilizar scripts que calculen de forma dinámica si el componente debe ser mostrado o no al usuario.
If all you want is to do something when the user is a "Site Manager", you can replace the group.module.evaluator with site.module.evaluator.
Check below a sample config where both Manager and Colaborator roles are used as parameters.
<evaluator type="site.module.evaluator">
<params>
<sites>.*</sites>
<applyForNonSites>false</applyForNonSites>
<groups>SiteManager,SiteCollaborator</groups>
<groupsRelation>OR</groupsRelation>
</params>
</evaluator>
The source code for this is here share/SlingshotSiteModuleEvaluator.java at master · Alfresco/share · GitHub
Douglas, this works when you are outside a site scope? For instance, when you are at the user dashboard?
No, it does not work, and I think that is a problem for any kind of "validation", as if the user is outside of a site, which site are you considering as the one to use to say that the user is a manager?
Is it right to say that if the user is the manager of any site, then he is a manager?
Should he be the manager of one specific site? Or manager of all the existing sites?
I think it is kind of weird to rely on the specific site role to make big changes in the Share interface as a whole.
Don't you think?
It was a requirement for the original question, not my own. Thanks for the clarification!
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.