Description
djaeggi, as discussed today it would be cool to provide an extension for the user/group actions that allowed to hook in additional processing/verification upon update of group membership.
initial thoughts to be discussed and verified for feasibilty:
- create GroupAction interface extending AuthorizableAction (to not blow up the original interface with operations that only affect groups)
- add 2 methods for addMember(s) and removeMember(s) each to cover both the add/removal by Authorizable and by multiple memberIds
The actions should be called after having successfully processed the modification and (in case on manipulation by ID) should only report those members that have been added/removed (see API contract of membership-update by ids).
Methods could e.g. look something like
void onMemberAdded(Group group, Authorizable member, Root root, NamePathMapper namePathMapper) throws RepositoryException; void onMembersAdded(Group group, Iterable<String> memberIds, Iterable<String> failedIds, Root root, NamePathMapper namePathMapper) throws RepositoryException; void onMemberRemoved(Group group, Authorizable member, Root root, NamePathMapper namePathMapper) throws RepositoryException; void onMembersRemoved(Group group, Iterable<String> memberIds, Iterable<String> failedIds, Root root, NamePathMapper namePathMapper) throws RepositoryException;