2012-04-04 17 views
5

Actualmente estoy creando un método java (parte de un bean administrado de XPages) para recuperar una lista de grupos de los que es miembro un usuario (no necesariamente usuario actual).Determinar todos los grupos para un usuario definido

¿Hay algún método fácil para recuperar esta información o voy a tener que recorrer todos los grupos para verificar el usuario y también verificar si esos grupos son subgrupos de otros grupos?

Respuesta

12

respondido a esta en un blog aquí: http://ntf.gbs.com/nathan/escape.nsf/d6plinks/NTFN-8TMHRP

Versión sencilla es que lo que estás buscando es ...

lotus.notes.addins.DominoServer server = new lotus.notes.addins.DominoServer("YourCanonicalServerName"); 
Collection nameList = server.getNamesList("TheUserNameYou'reLookingFor"); 

Eso debería ser todo lo que necesita .

+0

Mencionado en el blog, pero por si acaso nadie lo comprueba. "lotus.notes.addins. *" es una API no documentada, por lo que no hay garantía de que funcione en versiones posteriores (o que esté disponible). Por favor, use bajo su propio riesgo. –

+0

acaba de hacer uso de este excelente gracias !!!!!! – JMCooper

0

Puede recuperar esta información de la vista ($ServerAccess) en names.nsf, que se clasifica por nombre de usuario.

+0

$ ServerAccess no muestra si un usuario es miembro de un grupo que es miembro de un grupo. Por lo tanto, depende de los requisitos que pueden ser difíciles. Entonces comenzando con $ ServerAccess y trabajando desde allí. Grupos de advertencia que tienen referencias circulares – stwissel

0

session.evaluate ("@UserNamesList");

+0

Eso solo funcionará para el usuario actual; entonces no cumplirá con mis requisitos a menos que mi entendimiento sea incorrecto. – JMCooper

+0

Eso es correcto ... No leí el paréntesis .. –

0

No estoy seguro si puede (re) usar el LotusScript aquí, pero este article (IBM DeveloperWorks, look at the 4th paragraph) es un gran comienzo. Menciona las clases NotesGroupManager y NotesGroup. Estas clases podrían usarse como base para reescribir el código para XPages. No parece haber otra forma "fácil" de encontrar todos los grupos a los que pertenece un usuario. La respuesta directa a la pregunta parece ser NO.

0

En lugar de recorrer todos los grupos en todos los directorios del servidor, es posible que prefiera crear una vista especial en cada director organizado por los miembros del grupo. Eso hace que el hallazgo de partidos sea mucho más rápido.

Las herramientas GroupManager mencionadas por Jasper son también un buen ejemplo del código LotusScript que logra la mayor parte de lo que desea. Los objetos en Java son iguales, la sintaxis es mucho más molesta.

/Newbs

3

uso esta fragmentos:

XSPContext context = XSPContext.getXSPContext(FacesContext.getCurrentInstance()); 
DirectoryUser currentUser = context.getUser(); 
Vector<String> groups = new Vector(currentUser.getGroups()); 
Cuestiones relacionadas