How can I get a user's info by its email address? | Community
Skip to main content
Employee
October 16, 2015
Solved

How can I get a user's info by its email address?

  • October 16, 2015
  • 7 replies
  • 3440 views

How can I get a user's id etc. by its email address in CQ 5.6.1 or up?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by smacdonald2008

We have a community article that talks about working with the user manager. This article retrieves users and displays them in a grid control:

[img]UserGrid.png[/img]

This will help you - notice that email is listed as a column. 

See: 

http://helpx.adobe.com/experience-manager/using/using-ajax-requests-display-cq.html

For this workflow - you can get all users then iterate through the result set and compare email. Once you have the user you want -- get the other properties. 

Some people like using User Manager while others like the lower level JCR API. 

7 replies

smacdonald2008
New Participant
October 16, 2015

You can use JCR API to search for a node (the node that contains the user information) searching on the email address (which will be a property). Once you have the node -- you can read other properties. 

Employee
October 16, 2015

I was hoping like UserManager could have api to do that kind of job.

smacdonald2008
smacdonald2008Accepted solution
New Participant
October 16, 2015

We have a community article that talks about working with the user manager. This article retrieves users and displays them in a grid control:

[img]UserGrid.png[/img]

This will help you - notice that email is listed as a column. 

See: 

http://helpx.adobe.com/experience-manager/using/using-ajax-requests-display-cq.html

For this workflow - you can get all users then iterate through the result set and compare email. Once you have the user you want -- get the other properties. 

Some people like using User Manager while others like the lower level JCR API. 

Employee
October 16, 2015

The UserManager does have an API for this, which you should use instead of directly using JCR query - https://dev.day.com/docs/en/cq/current/javadoc/org/apache/jackrabbit/api/security/user/UserManager.html#findAuthorizables(java.lang.String, java.lang.String, int). The reason this is preferrable is that the the node types used for representing users are technically an implementation detail of the UserManager implementation.

Employee
October 16, 2015

Thanks for your reply!

I created a user with email as "myemail@geometrixx.info". Then tried to call this api as this: 

userMgr.findAuthorizables("email", "myemail@geometrixx.info", UserManager.SEARCH_TYPE_USER)

It doesn't return the matched user.

Can you see anything that I did wrong? 

Employee
October 16, 2015

Yes, that's helpful. Thanks a lot!

Employee
October 16, 2015

The email property is on the profile child node, so you need to do

userMgr.findAuthorizables("email", "myemail@geometrixx.info", UserManager.SEARCH_TYPE_USER)