Hi Juergen, Cool. Glad you succeeded.
If you get some time it would be great if you could create some documentation on xwiki.org (in the Dev Guide for example) on how to manipulate users/groups so that others can get that information from the doc and not have to go through all the hoops you had to go through. Thanks -Vincent On Feb 4, 2009, at 12:06 PM, Juergen Lorenz Simon wrote: > Hi, > > from the hints I managed to cobble together a piece of code that > works. Another problem > was presented by the multithreading that happened when a user opened > several iFrames > containing XWiki pages at the same time. This led to the weird > behaviour of stuff changing > while I was processing the user. > > Thanks, > J.L.Simon > > On 03.02.2009, at 19:41, Thomas Mortagne wrote: > >> On Tue, Feb 3, 2009 at 5:17 PM, Juergen Lorenz Simon <[email protected] >>> wrote: >>> >>> On 03.02.2009, at 16:08, Thomas Mortagne wrote: >>> >>>> Hi, >>>> >>>> The best documentation right now is to look at existing >>>> authenticators >>>> like XWikiLDAPAuthServiceImpl which create/update users and add/ >>>> remove >>>> users from groups. >>> >>> Unfortunately, the existing authenticator implementations do not >>> seem >>> to create groups and >>> assign users to them. The current code works somewhat, but it has >>> one >> >> LDAP authenticator does not create groups but it assign users to >> them, >> and when I say it does not create groups it just means it >> specifically >> avoid adding users to not existing groups since technically an empty >> group does not really exists. A groups is a wiki page containg >> objects >> of class XWiki.XWikiGroups each object representing a member (a user >> or a sub-group). >> >> Look at XWikiLDAPAuthServiceImpl#addUserToXWikiGroup to see exactly >> what means adding a user in a group. If you want to check if a user >> is >> in a group simply look if this group's document contains the member >> object for this user object. >> >>> big problem! The >>> following methods produce flaky results at best: >>> >>> XWikiGroupService gService = >>> context.getWiki().getGroupService(context); >>> boolean groupHasUser = gService.getAllGroupsNamesForMember(user, >>> 100, >>> 0, context).contains("XWiki."+PORTAL_GROUP_NAME); >>> boolean userInGroup = >>> gService >>> .getAllMatchedMembersNamesForGroup("XWiki."+PORTAL_GROUP_NAME, >>> null, 1000000, 0, true, context).contains(user); >>> >>> many times, both calls suggest that the user is not in the group! >>> Even >>> if he is! Which means >>> that the user is added to the group many, many times! The first >>> call >>> to gService is the most >>> unreliable, but I would prefer it to the second call, since we're >>> talking a potential 10.000 >>> users or more. I don't want to lug around collections with 10k+ >>> objects just to check if the >>> user is in the group? >>> >>> Help! >>> >>>> On Tue, Feb 3, 2009 at 3:25 PM, Juergen Lorenz Simon <[email protected] >>>>> wrote: >>>>> Hi, >>>>> >>>>> sorry for being thick, but I can't find any documentation at all >>>>> how >>>>> to do this in Java and I still >>>>> need some help with this. >>>>> >>>>> In our authenticator I'd like to check if users coming from a >>>>> certain >>>>> angle (i can check on that >>>>> through cookies) are in a special group. If they are not, I'd >>>>> like to >>>>> add the to this group. >>>>> >>>>> Furthermore this group needs to asserted of, so I need to be able >>>>> to >>>>> reliably find out if it >>>>> does exist and if not, create it. >>>>> >>>>> So far I've been frustrated by failure by attempting to use the >>>>> XWikiGroupService to achieve this. >>>>> Also I don't seem to be able to find a clean documentation on how >>>>> users and groups and done >>>>> in XWikI (in java, especially). Is there such documentation? >>>>> >>>>> The following code, to much bewilderment, creates a USER?! >>>>> >>>>> public void checkPortalGroup(XWikiContext context) { >>>>> if (!_portalGroupChecked) { >>>>> try { >>>>> boolean groupExists = false; >>>>> List<String> groupList = >>>>> context.getWiki().getGroupService(context).listAllGroups(context); >>>>> for (ListIterator<String> groups = groupList.listIterator(); >>>>> groups.hasNext() && !groupExists;) { >>>>> groupExists = groups.next().equals(PORTAL_GROUP_NAME); >>>>> } >>>>> if (!groupExists) { >>>>> log.info("Group "+PORTAL_GROUP_NAME+" does not exist and >>>>> will be created."); >>>>> BaseCollection portalGroup = >>>>> context.getWiki().getGroupClass(context).newObject(context); >>>>> portalGroup.setName(PORTAL_GROUP_NAME); >>>>> >>>>> context.getWiki().getHibernateStore().saveXWikiObject((BaseObject) >>>>> portalGroup, context, true); >>>>> } >>>>> } catch (XWikiException e) { >>>>> log.error("Exception while locating or creating group >>>>> "+PORTAL_GROUP_NAME+" : "+e.getMessage()); >>>>> e.printStackTrace(); >>>>> } >>>>> _portalGroupChecked=true; >>>>> } >>>>> } >>>>> >>>>> I need some serious pointers on how the xwiki objects/classes >>>>> thing >>>>> is >>>>> supposed to work >>>>> for users/groups. >>>>> >>>>> Thanks a lot, >>>>> J.L.Simon >>>>> _______________________________________________ >>>>> devs mailing list >>>>> [email protected] >>>>> http://lists.xwiki.org/mailman/listinfo/devs >>>>> >>>> >>>> >>>> >>>> -- >>>> Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

