AEM6.5 how to get user details and the groups the user is associated to in author environment | Community
Skip to main content
srinivas_chann1
Level 7
January 5, 2021
Solved

AEM6.5 how to get user details and the groups the user is associated to in author environment

  • January 5, 2021
  • 2 replies
  • 5422 views

Hi,

 

Once any user  logs in to the author environment how could I get the details of the groups the user is member of.

 

I am using js so wanted to check if there is any json available through which I could get this details. Instead of me building a new code for this.

 

I noticed that for authorizables.json  we need to provide the username.

http://localhost:4502/bin/security/authorizables.json?filter=username&_charset_=utf-8

 

Now if is the case i would need a way to find the user name in the js and then again send the request. 

 

Please let me know as I could resolve this in a better way .

 

 

Thanks

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 shelly-goel

@srinivas_chann1 

In js, you can get the user as Granite.author.ContentFrame.getUserID()

Please refer to the function getUserGroups() here:

http://experience-aem.blogspot.com/2019/09/aem-6510-authoring-restrict-msm-rollout-to-specific-user-groups.html

2 replies

Suraj_Kamdi
Community Advisor
Community Advisor
January 5, 2021

@srinivas_chann1 

I would suggest using the service user to get the details of AEM user/groups. Make use of Authorizable API

https://helpx.adobe.com/experience-manager/6-5/sites/developing/using/reference-materials/javadoc/org/apache/jackrabbit/api/security/user/Authorizable.html 

 

see the following code snippet

 

 

public static Group getGroup(String userId, UserManager userManager) { try { return (Group) userManager.getAuthorizable(userId); } catch (RepositoryException e) { logger.error("Error {}", e); } return null; }

 

 

shelly-goel
Adobe Employee
shelly-goelAdobe EmployeeAccepted solution
Adobe Employee
January 5, 2021

@srinivas_chann1 

In js, you can get the user as Granite.author.ContentFrame.getUserID()

Please refer to the function getUserGroups() here:

http://experience-aem.blogspot.com/2019/09/aem-6510-authoring-restrict-msm-rollout-to-specific-user-groups.html

srinivas_chann1
Level 7
January 6, 2021

I did the below to solve the issue 

 

 

function getLoggedInUserID() {
var currentUserId = "";
var currentUserInfo;
var CURRENT_USER_JSON_PATH = Granite.HTTP.externalize('/libs/granite/security/currentuser.json');
var result = Granite.$.ajax({
type: "GET",
async: false,
url: CURRENT_USER_JSON_PATH
});

if (result.status === 200) {
currentUserInfo = JSON.parse(result.responseText);
currentUserId = currentUserInfo.authorizableId;
}
return currentUserId;
}

 

 

function getUserGroups(userID){

var isMemberOfGroupEveryOne=false;

$.ajax({
url: "/bin/security/authorizables.json?filter=" + userID +'&_charset_=utf-8',
async: false,
success: function(result) {


if (result) {
$.each(result.authorizables,function(index,authObj){


if( (authObj.id !== userID)){
return;
}else {

$.each(authObj.memberOf,function(index,memberOf){
if(memberOf.id === 'everyone'){
isMemberOfGroupEveryOne=true;
}
});


}

});
}

}
});

 


return isMemberOfGroupEveryOne;
}