Expand my Community achievements bar.

SOLVED

Creeating users using serviceresourceresolver in AEM 6.5

Avatar

Level 3

Hi,

 

Can we write into /home/users using ServiceResoruceResolver in AEM 6.5? My understanding is we have to use Adminstrative session to write into /home/users but wanted to confirm.

 

Regards,

Kishore

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Hi @kishored6899358 

You need to be part of user-administrator group in order create/update users/groups.

 



Arun Patidar

View solution in original post

3 Replies

Avatar

Level 7

Hi @kishored6899358 

String userID = request.getParameter("userID");
String userFirstName = request.getParameter("userFirstName");
String userLastName = request.getParameter("userLastName");
String userEmail = request.getParameter("userEmail");
String password = request.getParameter("password");

//Getting ResourceResolver and Session using System Users
Map<String, Object> param = new HashMap<>();
param.put(ResourceResolverFactory.SUBSERVICE, SYSTEM_USER);
resourceResolver = resourceResolverFactory.getServiceResourceResolver(param);
Session session = resourceResolver.adaptTo(Session.class);
assert session != null;

//Getting UserManager from ResourceResolver
UserManager userManager = resourceResolver.adaptTo(UserManager.class);
assert userManager != null;

//Creation of a new user with userID
User createdUser = null;
if (userManager.getAuthorizable(userID) == null) {
    createdUser = userManager.createUser(userID, password);

    //Setting the createdUser Profile Property
    ValueFactory valueFactory = session.getValueFactory();
    Value firstNameValue = valueFactory.createValue(userFirstName, PropertyType.STRING);
    createdUser.setProperty("./profile/givenName", firstNameValue);

    Value lastNameValue = valueFactory.createValue(userLastName, PropertyType.STRING);
    createdUser.setProperty("./profile/familyName", lastNameValue);

    Value emailValue = valueFactory.createValue(userEmail, PropertyType.STRING);
    createdUser.setProperty("./profile/email", emailValue);

    session.save();
    logger.info("User successfully created with ID : {}", createdUser.getID());
} else {
        logger.info("User already exist..");
}

 

Refrences: 

https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/programmatic-user-creation... 

https://unlocklearning.in/aem-user-group-creation-and-permission-programmatically/ 

Avatar

Correct answer by
Community Advisor

Hi @kishored6899358 

You need to be part of user-administrator group in order create/update users/groups.

 



Arun Patidar