I am using AEM 6.3 & I have a use case where User A needs to be setup as impersonator on user B using api code. In order to achieve this, I need to setup rep:impersonators property on user B.
I have tried couple of options but none of these seems to be setting this property on user:
1. Added User A to user-administrators group and then tried to call grantimpersonators method on user B using user A but it always returns false.
2. Created a system user and added it to users-administrators group and then using user session tried to set rep:impersonators property on user B. But this also does not work
Can you please assist on how can I setup the impersonators property on any user using api and what are the prerequisites in order to be able to add this property successfully.
smacdonald2008: Below are the 3 options that we tried:
Boolean checkImpersonated = userB.getImpersonation().grantImpersonation(userA.getPrincipal());
//always returns false.
Value userAuthorizableId=session.getValueFactory().createValue(userSession.getUserID(), PropertyType.STRING);
User userB=(User) userManager.getAuthorizable(impersonateUser);
Authorizable auth = userManager.getAuthorizable(userBId);
Node authNode = session.getNode(auth.getPath());
The JCR standard does not provide this feature, but the Jackrabbit implementation does.
User canImpersonate = ...
User jrUser = (User) session.getUser();
Impersonation impersonation = jrUser.getImpersonation();
Also current logged in user is canImpersonate and I want to setup the impersonation property on jrUser.
canImpersonate is a member of user-adminsitrations which means this user has all the rights to update user/groups.