How to get group in sightly? | Adobe Higher Education
Skip to main content
Er kunnen geen reacties meer worden geplaatst op dit onderwerp.
Beste antwoord door joerghoh

Hi,

 

please don't do that. Imagine what happens if the result of such a request is stored in the dispatcher cache and returned to the next user requesting the same page.

5 reacties

Himanshu_Jain
Community Advisor
Community Advisor
June 2, 2022
Dinu_Arya
Dinu_AryaAuteur
Level 6
June 2, 2022

Thank you. But I have to get current user's(whoever is logged in) group . @himanshu_jain 

arunpatidar
Community Advisor
Community Advisor
June 2, 2022

Hi,

You cannot get it in HTL. You need to write a java or javascript use api for https://github.com/arunpatidar02/aem63app-repo/blob/master/java/SimpleGetGroup.java 

User currentUser = request.getResourceResolver().adaptTo(User.class);

and you make sure the page/content is not cached in case of logged in user otherwise you will have same version of content for all the users (cached version)

Arun Patidar
sunil_kumar_
Level 5
June 2, 2022

Hi @dinu_arya ,
You can get user information using "UserManagementService" in sling model and then in sightly.

Consider this code is written in sling model.

 

Declare or Inject required variables and Services

private String userID;

private String userName;
private List<String> userGroupsList =new ArrayList<>();

@SlingObject
ResourceResolver resourceResolver;

@OSGiService
UserManagementService userManagementService;

 In @PostConstruct use this code to get User and User's Groups information

String anonymousID = userManagementService != null ? userManagementService.getAnonymousId() : UserConstants.DEFAULT_ANONYMOUS_ID;
userID=resourceResolver.getUserID();
UserManager userManager=resourceResolver.adaptTo(UserManager.class);

if(userManager!=null){
Iterator<Group> userGroups= userManager.getAuthorizable(userID).memberOf();
while (userGroups.hasNext()){
Group group=userGroups.next();
userGroupsList.add(group.getID());
}

}
UserPropertiesManager userPropertiesManager=resourceResolver.adaptTo(UserPropertiesManager.class);
if (userPropertiesManager != null) {
UserProperties userProperties = userPropertiesManager.getUserProperties(userID, "profile");
for (String userProperty : userProperties.getPropertyNames()) {
LOG.info("\n User Properties {} : {} ",userProperty,userProperties.getProperty(userProperty));
}
userName=userProperties.getDisplayName();

}

Get working demo code from get.
https://github.com/aemgeeks1212/aemgeeks/blob/master/core/src/main/java/com/aem/geeks/core/models/impl/UserInfoImpl.java

https://github.com/aemgeeks1212/aemgeeks/blob/master/core/src/main/java/com/aem/geeks/core/models/UserInfo.java

https://github.com/aemgeeks1212/aemgeeks/blob/master/ui.apps/src/main/content/jcr_root/apps/aemgeeks/components/content/userinfo/userinfo.html

 

joerghoh
Adobe Employee
joerghohAdobe EmployeeAntwoord
Adobe Employee
June 3, 2022

Hi,

 

please don't do that. Imagine what happens if the result of such a request is stored in the dispatcher cache and returned to the next user requesting the same page.

sunil_kumar_
Level 5
June 3, 2022

Agree @joerghoh