Get user info - $services.user.getProperties

I have code (xwiki 12.2):

{{velocity}}
$services.user.getProperties("xwiki:XWiki.Pablo"))
{{/velocity}}

and get

org.xwiki.user.internal.document.DocumentUserProperties@6099bf2c

How to get email or first_name from there?

I want to use it for users from group:
$allGroupsInAllWikis = $services.user.group.getMembers('xwiki:XWiki.XWikiAdminGroup')

And I get array
$allGroupsInAllWikis = [xwiki:XWiki.Pablo, xwiki:XWiki.Martinez]
, so in loop I would get email for each user.

Hi, the doc is at https://extensions.xwiki.org/xwiki/bin/view/Extension/User%20Module/API/ (I’ve added a link to the UserProperties sources). Note that javadoc is available at https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/API/

Which leads to http://nexus.xwiki.org/nexus/service/local/repositories/public/archive/org/xwiki/platform/xwiki-platform-user-api/12.2/xwiki-platform-user-api-12.2-javadoc.jar/!/index.html which leads to http://nexus.xwiki.org/nexus/service/local/repositories/public/archive/org/xwiki/platform/xwiki-platform-user-api/12.2/xwiki-platform-user-api-12.2-javadoc.jar/!/org/xwiki/user/UserProperties.html

For example:

{{velocity}}
$services.user.getProperties("xwiki:XWiki.Pablo").getEmail()
{{/velocity}}

So I use

$services.user.getProperties("xwiki:XWiki.Pablo").getEmail()
$services.user.getProperties("xwiki:XWiki.Martinez").getEmail()

and for both get the same email address (email of logged in user) :confused:

when I use fake user I get still the same email

$services.user.getProperties("xwiki:XWiki.NNNNNNNNNN").getEmail()

Now I workaround it with:

{{velocity}}
#set($allGroupsInAllWikis = $services.user.group.getMembers('xwiki:XWiki.XWikiAdminGroup'))

#foreach($prop in $allGroupsInAllWikis)
  #set($userDoc = $xwiki.getDocument($prop))
  $userDoc.email
#end

{{/velocity}}

Thanks, you’ve found a bug in the new user api! Could you report a bug on https://jira.xwiki.org/projects/XWIKI/summary?

Note, the issue is a velocity method signature mapping (the wrong method signature is used), and thus you get the properties for the current logged-in user.

Thanks!

So thats mean that this need new version of xwiki to fix or juzt extension update? :slight_smile:

created:
https://jira.xwiki.org/browse/XWIKI-17169

New version of XWiki (although you could patch your version too). But two things:

  • There’s a workaround, see my comment on the jira issue
  • You can use the older user api which works fine (even though not recommended for the future):
    {{velocity}}
    $xwiki.getDocument("xwiki:XWiki.Admin").getValue("email")
    $xwiki.getDocument("xwiki:XWiki.test").getValue("email")
    {{/velocity}}
    

Thanks, I’ll fix it tomorrow morning.

Fixed: https://github.com/xwiki/xwiki-platform/commit/8f6f8100da1154be595f1b7a3bfdacb2999818ac