Expand my Community achievements bar.

SOLVED

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

Avatar

Level 2

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

1 Accepted Solution

Avatar

Correct answer by
Level 10

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. 

View solution in original post

7 Replies

Avatar

Level 10

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. 

Avatar

Level 2

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

Avatar

Correct answer by
Level 10

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. 

Avatar

Employee

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.h..., 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.

Avatar

Level 2

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? 

Avatar

Employee

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

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