Grupos Web Script

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2008 02:52 PM
Quiero grear grupos a través de un web script, tengo el siguiente cogigo:
<webscript> <shortname>Crear grupo</shortname> <description>Nuevo grupo en Alfresco</description> <url>/esoft/grupo?nombre={nombre}</url> <format default="xml"/> <authentication>user</authentication> <transaction>required</transaction></webscript>
var nuevo = null;var grupoExiste = null;var busca = people.getGroup(args.nombre);if( busca == null){ people.createGroup(null,args.nombre); busca = people.getGroup(args.nombre); nuevo = busca; model.nuevo = nuevo;}else{ grupoExiste = "Este grupo ya existe"; model.grupoExiste = grupoExiste;}
<#if nuevo??> <grupo>${nuevo.id}</grupo></#if><#if grupoExiste??> <grupo>${grupoExiste}</grupo></#if>
El web script crea el grupo pero a la hora de buscarlo me devulve un null, es mas si intento crear un grupo con el mismo nombre, el web script lo permite, pero igual en la consola de alfresco solo puede ver un grupo con este nombre.
Qué más tengo que hacer para que el web scrip funcione bien y para que a la hora de buscarlo pueda encontrarlo?
- Labels:
-
Archive

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2008 04:13 PM
Te faltaba un mini-detalle

Cuando se realiza las búsquedas de grupos mediante el API JavaScript debes incluir el prefijo "GROUP_" (no ocurre lo mismo cuando se crean :? )
Por tanto, el javascrript te debería quedar así:
var nuevo = null; var grupoExiste = null; var busca = people.getGroup("GROUP_" + args.nombre); if( busca == null) { people.createGroup(null,args.nombre); busca = people.getGroup("GROUP_" + args.nombre); nuevo = busca; model.nuevo = nuevo; } else { grupoExiste = "Este grupo ya existe"; model.grupoExiste = grupoExiste; }
Saludos y bienvenido al foro!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2008 04:44 PM
Que pena la molestia, ahora necesito otro favor, para crear ausuarios, tengo el siguiente web script
<webscript> <shortname>Crear un usuario</shortname> <description>Nuevo usuario en Alfresco</description> <url>/esoft/usuario?nombre={nombre}</url> <format default="xml"/> <authentication>user</authentication> <transaction>required</transaction></webscript>
var nuevo = null;var usuarioExiste = null;var busca = people.getPerson(args.nombre);if( busca == null){ people.createPerson(args.nombre); busca = people.getPerson(args.nombre); nuevo = busca; model.nuevo = nuevo;}else{ people.deletePerson(args.nombre); usuarioExiste = "Este usuario ya existe"; model.usuarioExiste = usuarioExiste;}
<#if nuevo??> <usuario>${nuevo.id}</usuario></#if><#if usuarioExiste??> <usuario>${usuarioExiste}</usuario></#if>
En efecto el web script funciona, crea el usuario, pero necesito saber como le asigno las demas propiedades al usuario ( password, correo, nombre, apellido, etc) ademas como lo agrego a un grupo?
ajv muchas gracias por tu colaboracion y perdona las molestias


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2008 06:02 PM
Eso de createPerson es para la nueva versión Labs 3.0!! Hasta ahora no era posible crear usuarios desde el API Javascript, y me consta que era bastante solicitada.

Yo no la tengo instalada todavía, pero apostaría que es como el resto de modificaciones de propiedades:
people.createPerson(args.nombre); busca = people.getPerson(args.nombre); busca.properties["cm:firstName"] = "adri"; busca.properties["cm:lastName"] = "jim"; busca.properties["cm:email"] = "adri@adri.com"; busca.save(); nuevo = busca; model.nuevo = nuevo;
Tendrás opción de modificar las propiedades de la persona…lo que no tengo muy claro (no sé como lo habran resuelto) es el tema del password. Si no voy mal, no se almacenan en el store de workSpaces, sino en System. Al ser un tipo de contenido diferente (usr:user) y ser un nodo totalmente diferente al que acabas de crear, no sé como podrás acceder a ese nodo (ni siquiera sé si se habrá creado!). Por tanto, podrías crear a las personas, pero me parece que no podrán entrar…
Nota: En principio no sería necesario lanzar una búsqueda nada más crear el objeto, pues la función te lo devuelve:
busca = people.createPerson(args.nombre); busca.properties["cm:firstName"] = "adri"; busca.properties["cm:lastName"] = "jim"; busca.properties["cm:email"] = "adri@adri.com"; busca.save(); nuevo = busca; model.nuevo = nuevo;
Saludos!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-23-2008 06:06 PM
Para vincular un usuario a un grupo en concreto puedes emplear la función:
people.addAuthority(grupo, usuario);
Donde ambos son los nodos que representan al grupo padre y al usuario, respectivamente.Y que no te sepa mal cometer esos fallitos, que todos metemos la pata!

Hasta luego!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2008 10:12 AM
Tambien necesito saber como asignar los permisos a los spaces desde un web script, permitiendo que algunos grupos tengan acceso a un space y otros no, Muchas gracias por tu colaboración de nuevo y perdona por las molestias.
Gracias!!!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2008 10:43 AM
Pues mis sospechas sobre lo del API de usuarios va cogiendo peso. Como te dije la función createPerson únicamente creará el nodo del tipo cm

Seguiré investigando sobre ello…
Respecto a asignar permisos, sí que dispones de un API de permisos que te permiten incorporar seguridad a los espacios y demás nodos del repositorio. Viendo que usas la versión 3.0, te adjunto la especificaicón de éstas: http://wiki.alfresco.com/wiki/JavaScript_API_3.0#Permission_and_Security_API
El método que cre que usarás más en todo el tema de asignación de permisos es:
void setPermission(string permission, string authority)
El cual asigna al nodo un permiso a la autoridad (usuario o grupo) indicada.Algo de este tipo:
document.setPermission("Contributor",grupo);
Bueno, que vaya bien!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2008 12:48 PM
Tengo una duda con lo de los permisos, lo que quiero hacer es crear un web script con el cual pasandole el nombre del space y el role pueda asignar ese permiso a un grupo o usuario determinado, me podias guiar un poco en este tema.
Tengo:
space.setPermission("Contributor",grupo);
Pero como le asigno a space el space que yo quiera, tengo que hacer alguna busqueda?De nuevo muchas gracias y perdona por la insistencia.
Gracias!!!


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2008 05:32 AM
Buena idea lo de tirar por web services para la creación de usuarios! :wink:
Respecto al tema de los permisos, efectivamente, el objeto sobre el que se aplica el método setPermission es el objeto sobre el que recaerán dichos permisos.
Por tanto, 'space' debe ser el espacio al que quieres aplicar un nivel de seguridad. No tiene por qué ser un espacio, puedes hacerlo a nivel de cualquier nodo (los contenidos pueden tener su propio nivel de seguridad, de manera que dentro de un mismo espacio podría no ver todos los contenidos existentes).
Entonces, desde tu javascript debes obtener la referencia a los nodos que te interesen proteger. Por ejemplo, vía una búsqueda de lucene o similar.
Por ejemplo: var nodes = search.luceneSearch("PATH:" + args.path);
Y para cada uno de los nodos, le aplicas el permiso…
Espero haberte aclarado un poquito el tema. :mrgreen:
Saludos!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-19-2009 04:10 PM
La verdad es que me habéis aclarado no únicamente como trabajan los webscripts y cómo acceder a la api, sinó también habéis tratado justamente el tema que me tenía más preocupado que era las altas de usuarios a través de webscript. De antemano MUCHAS GRACIAS.
Me gustaría hacer 3 preguntas que seguramente os parecerán muy simples:
1- Al crear los scripts de alta de usuario, lo busco en Alfresco y se ve correctamente los datos pero al intentar cambiar su password me salta el siguiente mensaje:
Please correct the errors below then click Finish.
* A system error happened during the operation: User name does not exist: miusuario
Y lo que es más curioso aún, es que aún habiendo comprobado que existe introduzco busca2= people.enablePerson(login); en el webscript me dice que no encuentra el usuario en el workspace/SpaceStore/company home/data dictionary…… /<ubicacion del webscript>:
var nuevo = null;var usuarioExiste = null;var login="";var nombre="";var apellidos="";var email="";var empresa="";var password="";login=args["login"];nombre=args["nom"];apellidos=args["ape"];email=args["email"];empresa=args["emp"];password=args["pwd"];var busca = people.getPerson(login);var TextoUsuario= null;var busca2=null;if( busca == null){ nuevo = people.createPerson(login); nuevo.properties["cm:userName"]=login; nuevo.properties["cm:firstName"]=nombre; nuevo.properties["cm:lastName"] = apellidos; nuevo.properties["cm:email"] =email; nuevo.properties["cm:organizationId"] =empresa; nuevo.properties["cm:password"]=password; nuevo.save(); busca2= people.enablePerson(login); model.nuevo = nuevo; TextoUsuario = "El usuario de login:" + login + " y con el nombre " + nombre + " " + apellidos + ", email = " + email +",empresa=" + empresa +", password=" + password +" se ha creado con éxito! En la habilitación el resultado ha sido: "+busca2+"; model.TextoUsuario=TextoUsuario;}else{ //people.deletePerson(args.nombre); TextoUsuario = "El usuario de login:" + login + " y con el nombre " + nombre + " " + apellidos + ", email = " + email +",empresa=" + empresa +", password=" + password +" NO se ha creado!!REVISE QUE NO EXISTA PREVIAMENTE!"; model.TextoUsuario=TextoUsuario;}
No uso ningún tipo de autenticación LDAP ,NTLM, CAS, etc… sólo la por defecto para hacer las pruebas y no consigo loggearme, así que se me ocurre otra pregunta:
2 - Si establezco una autenticación por CAS, el alfresco normalmente me crea el usuario y su carpeta en user homes, pero que pasará si ya lo tengo en el sistema. La autenticación la hace por el CAS eso ya lo he averiguado, pero que ocurre con sus permisos y grupos gestionados por el propio alfresco.?? Y si doy de alta después de haberse loggeado al menos una vez??
3- Como puedo saber el listado de propiedades como cm:userName,cm:firstName, etcétera….?? digo porqué me interesa también limitar la cuota.!!!
Siento tantas dudas y preguntas, pero la documentación de la wiki, blogs, etc.. me lia más que me ayuda… :lol:
Saludos y gracias
