cancel
Showing results for 
Search instead for 
Did you mean: 

Web script argumento uid de un usuario, devuelva grupos

goja
Champ in-the-making
Champ in-the-making
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 9

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Confirmed Champ
Confirmed Champ
Edite el post, prueba con mas propiedades del modelo usr:. Entiendo que deben de ir por ahi los tiros.

Saludos

goja
Champ in-the-making
Champ in-the-making
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
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Confirmed Champ
Confirmed Champ
Buenas de nuevo,

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

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

Saludos

goja
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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.
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.