I created a forget Password service for the user to reset his/her own password by sending a link to his email and providing a reset password page.
Inside this service I use:
session = resolver.adaptTo(Session.class);
UserManager userMgr = resolver.adaptTo(UserManager.class); Authorizable a = userMgr.getAuthorizable(userid, User.class); User user = (User)userMgr.getAuthorizable(userid, User.class);
The resolver here is a resourceResolver for a serviceUser Account "userManager" and I have granted access to '/home' read/modify/create,Read ACL,Edit ACL but I still receive "javax.jcr.AccessDeniedException: OakAccess0000: Access denied " when I run "session.save()"
We are now using the build in user 'communities-user-admin' instead of our own service account. We do like to understand why our own account did not work. Most likely because we did not add our own service account to the 'user-administrators' group role which has probably a setting to allow changes to users&groups.
Note: we still cannot add node/change node for the the build in 'admin' account. Most likely this is a protected account and only 'admin' user can change 'admin' accounts.