@Override public void addUserToGroups( User user, Collection<String> uids ) { addUserToGroups( user, uids, currentUserService.getCurrentUser() ); }
@Override public void addUserToGroups( User user, Collection<String> uids, User currentUser ) { for ( String uid : uids ) { if ( canAddOrRemoveMember( uid, currentUser ) ) { UserGroup userGroup = getUserGroup( uid ); userGroup.addUser( user ); userGroupStore.updateNoAcl( userGroup ); } } }
@Override public void updateUserGroups( User user, Collection<String> uids ) { updateUserGroups( user, uids, currentUserService.getCurrentUser() ); }
@Override public void updateUserGroups( User user, Collection<String> uids, User currentUser ) { Collection<UserGroup> updates = getUserGroupsByUid( uids ); for ( UserGroup userGroup : new HashSet<>( user.getGroups() ) ) { if ( !updates.contains( userGroup ) && canAddOrRemoveMember( userGroup.getUid(), currentUser ) ) { userGroup.removeUser( user ); } } for ( UserGroup userGroup : updates ) { if ( canAddOrRemoveMember( userGroup.getUid(), currentUser ) ) { userGroup.addUser( user ); userGroupStore.updateNoAcl( userGroup ); } } }
@Override public boolean canAddOrRemoveMember( String uid ) { return canAddOrRemoveMember( uid, currentUserService.getCurrentUser() ); }
@Override public boolean canAddOrRemoveMember( String uid, User currentUser ) { UserGroup userGroup = getUserGroup( uid ); if ( userGroup == null || currentUser == null || currentUser.getUserCredentials() == null ) { return false; } boolean canUpdate = aclService.canUpdate( currentUser, userGroup ); boolean canAddMember = currentUser.getUserCredentials().isAuthorized( UserGroup.AUTH_ADD_MEMBERS_TO_READ_ONLY_USER_GROUPS ); return canUpdate || canAddMember; }
@Override public void removeUserFromGroups( User user, Collection<String> uids ) { for ( String uid : uids ) { if ( canAddOrRemoveMember( uid ) ) { UserGroup userGroup = getUserGroup( uid ); userGroup.removeUser( user ); userGroupStore.updateNoAcl( userGroup ); } } }