Personalizar Share Header (Aikau) para el rol SiteManager

cancel
Showing results for 
Search instead for 
Did you mean: 
joseantonionava
Established Member

Personalizar Share Header (Aikau) para el rol SiteManager

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.

8 Replies
angelborroy
Alfresco Employee

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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;

                                                            }

                                                }

                                    }

 

                        }

            }

 

}

 

 

Hyland Developer Evangelist
angelborroy
Alfresco Employee

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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.

Hyland Developer Evangelist
joseantonionava
Established Member

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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.

angelborroy
Alfresco Employee

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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.

Hyland Developer Evangelist
douglascrp
Advanced II

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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 

angelborroy
Alfresco Employee

Re: Personalizar Share Header (Aikau) para el rol SiteManager

Douglas, this works when you are outside a site scope? For instance, when you are at the user dashboard?

Hyland Developer Evangelist
douglascrp
Advanced II

Re: Personalizar Share Header (Aikau) para el rol SiteManager

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?

angelborroy
Alfresco Employee

Re: Personalizar Share Header (Aikau) para el rol SiteManager

It was a requirement for the original question, not my own. Thanks for the clarification!

Hyland Developer Evangelist