Web script argumento uid de un usuario, devuelva grupos

cancel
Showing results for 
Search instead for 
Did you mean: 
goja
Member II

Web script argumento uid de un usuario, devuelva grupos

Hola muy buenas!!, tengo que hacer un web script que pasándole como argumento el uid de un usuario, me deuelva en qué grupo o grupos de usuarios está inlcuido.

Alguien podría ayudarme? El caso es que tenemos la Versión: Community Network - v2.1.0 y he visto en un hilo que utilizaban este código, que no sé si eso hace exactamento lo que busco, pero por mi versión, no puedo usar el getQnamePath()

/*
Get User Groups Webscript Javascript file
*/
var person = people.getPerson(args["name"]);
model.groups = people.getContainerGroups(person);
model.test = new Array();
var containerGroups = people.getContainerGroups(person);
for(var i=0;i<containerGroups.length;i++){
   model.test = containerGroups.getQnamePath();
}
model.personName = person;

Es que no sé muy bien cómo funciona el .getContainerGroups(person), yo entiendo que devuelve los grupos a los que pertenece ese usuario, pero es eso??

Yo estoy probando la función en un script, para ver si pillo cómo va:

var arr = new Array();
arr = people.getContainerGroups(person);

if (document.hasPermission("Write"))
{
  if (document.mimetype == "text/html")
   {
      document.content +=  "<br><table width='100%' style='border:1px solid #000000'><tr><td width='10%'><font size='2' face='Arial, Helvetica, sans-serif'> <strong> Persona: </strong> " + firstName + " " + lastName + " - " + " Grupo: " + arr[0] + "<br> " + arr[1] + "</font></td></tr></table>";

     document.save();
   }
}

arr[0] y arr[1] me devuelve esto:
Node Type: {http://www.alfresco.org/model/user/1.0}authorityContainer, Node Aspects: [{http://www.alfresco.org/model/system/1.0}referenceable]
Node Type: {http://www.alfresco.org/model/user/1.0}authorityContainer, Node Aspects: [{http://www.alfresco.org/model/system/1.0}referenceable]

si pongo arr[0].properties.name me devuelve a389ccad-07a8-11dd-ae88-ebb21cf4d4ca, total que no sé qué puedo usar para lograr obtener esto.

Todo consejo será bien recibido, muchas gracias.
9 Replies
pjcaracuel_2349
Active Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Por lo que veo te esta devolviendo objetos del tipo usr

<model name="usr:usermodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <description>Alfresco User Model</description>
   <author>Alfresco</author>
   <published>2005-08-16</published>
   <version>0.1</version>

   <imports>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <import uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
   </imports>
  
   <namespaces>
      <namespace uri="http://www.alfresco.org/model/user/1.0" prefix="usr"/>
   </namespaces>

   <constraints>
     <constraint name="usr:userNameConstraint" type="org.alfresco.repo.dictionary.constraint.UserNameConstraint" />
      <constraint name="usr:authorityNameConstraint" type="org.alfresco.repo.dictionary.constraint.AuthorityNameConstraint" />
   </constraints>
  
   <types>
    
      <type name="usr:authority">
        <title>Alfresco Authority Abstract Type</title>
         <parent>sys:base</parent>
      </type>
    
      <type name="usr:user">
         <title>Alfresco User Type</title>
         <parent>usr:authority</parent>
         <properties>
         <!– The tokenisation set here is ignored - it is fixed for this type –>
         <!– This is so you can not break person lookup –>
            <property name="usr:username">
               <type>d:text</type>
            <constraints>
                  <constraint ref="usr:userNameConstraint" />
               </constraints>
            </property>
            <property name="usr:password">
               <type>d:text</type>
            </property>
            <property name="usr:enabled">
               <type>d:boolean</type>
            </property>
            <property name="usr:accountExpires">
               <type>d:boolean</type>
            </property>
            <property name="usr:accountExpiryDate">
               <type>d:datetime</type>
            </property>
            <property name="usr:credentialsExpire">
               <type>d:boolean</type>
            </property>
            <property name="usr:credentialsExpiryDate">
               <type>d:datetime</type>
            </property>
            <property name="usr:accountLocked">
               <type>d:boolean</type>
            </property>
            <property name="usr:salt">
               <type>d:text</type>
            </property>
         </properties>
      </type>
  
      <type name="usr:authorityContainer">
         <title>Alfresco Authority Type</title>
         <parent>usr:authority</parent>
         <properties>
         <!– The tokenisation set here is ignored - it is fixed for this type –>
         <!– This is so you can not break group lookup –>
            <property name="usr:authorityName">
               <type>d:text</type>
            <constraints>
                  <constraint ref="usr:authorityNameConstraint" />
               </constraints>
            </property>
            <property name="usr:members">
               <type>d:text</type>
               <multiple>true</multiple>  
            </property>
         </properties>
         <associations>
            <child-association name="usr:member">
               <source>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </source>
               <target>
                  <class>usr:authority</class>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </target>
               <duplicate>false</duplicate>
            </child-association>
         </associations>
      </type>

   </types>
  
  
</model>

Prueba a poner
arr[0].properties.["usr:……"];

Esto es empeza a jugar con las propiedades de ese modelo.

Saludos
goja
Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Pues si pongo:

             arr[0].properties["usr:name"] , me devuelve null, de todas formas voy a mirar detenidamente lo que me has mandado.

Gracias!!
pjcaracuel_2349
Active Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Edite el post, prueba con mas propiedades del modelo usr:. Entiendo que deben de ir por ahi los tiros.

Saludos
goja
Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Muy buenas de nuevo, no hay manera de que encuentre la solución a esto, sólo veo salida por ir recorriendo todos los grupos, coger de cada grupo todos los usuarios, e ir recorriendo todos a ver si está el usuario buscado, pero me parece muy fuerte tener que hacer todos esos recorridos.

El caso que la función people.getContainerGroups me funciona pero me devuelve lo mismo en todos los elementos del array, que era lo que puse en el primer mensaje, lo único que me devuelve cosas diferentes para cada elemento del array es
arr.properties.name, que me devuelve un churro de números y letras, alguien sabe si a partir de ese churro se puede sacar el nombre real del grupo??

Estoy buscando y leyendo todo lo que encuentro. Alguien ha hecho eso?

Muchas gracias a todos. Smiley Happy
pjcaracuel_2349
Active Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Buenas el chorro, es el uuid del grupo.

Una forma de hacerlo, seria recorrer el array y realizar por cada iteracion una busqueda que te devuelva el nombre del grupo cuyo uuid sea el que le pasas.

De todas formas voy a mira mas.

Saludos
goja
Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Hola buenas, muchas gracias, pero eso es exactamente lo que no sabemos, sacar el nombre del grupo a partir del uuid del grupo, no encuentro ninguna función get o algo que pasándole ese identificador te lo traduzca en el nombre.

Pero muchas gracias por contestar, que eres el único que me contesta Smiley Sad (se nota que la tierra tira, jejej, que soy andaluza también)
pjcaracuel_2349
Active Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Buenas de nuevo,

Seguro que esto no te devuelve el nombre del grupo??

arr[0].properties["usr:authorityName"]

Saludos
goja
Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Ufff, Pedro sí que me lo devuelve, no te puedes hacer a la idea de lo feliz que me has hecho!!! Que llevo desde ayer buscando eso!!!

Con gente así da gusto.

Muchísimas gracias Smiley Wink
fernando
Member II

Re: Web script argumento uid de un usuario, devuelva grupos

Tengo una pregunta ahora que veo que tenéis en el model una propiedad <multiple>true</multiple>

En alfresco 3 Stable también lo puedo usar, es que cuando intento ponerlo, me aparece al intentar guardar el contenido un mensaje que viene a ser así:

could not deserialize,

y me estoy volviendo loco para ver porque es y está relacionado con el model, porque en el xsd del webform le quito el campo que está "multivaluado" y no me da ningún error.

Gracias.