@Override public User deleteUser(User user) throws AuthorizationAccessException { return configurableUserGroupProvider.deleteUser(user); }
@Override public User deleteUser(final String userId) { if (userGroupProvider instanceof ConfigurableUserGroupProvider) { final ConfigurableUserGroupProvider configurableUserGroupProvider = (ConfigurableUserGroupProvider) userGroupProvider; final User user = getUser(userId); final User removedUser = configurableUserGroupProvider.deleteUser(user); // ensure the user was removed if (removedUser == null) { throw new ResourceNotFoundException(String.format("Unable to find user with id '%s'.", userId)); } // remove any references to the user being deleted from policies if possible if (accessPolicyProvider instanceof ConfigurableAccessPolicyProvider) { for (AccessPolicy policy : accessPolicyProvider.getAccessPolicies()) { final ConfigurableAccessPolicyProvider configurableAccessPolicyProvider = (ConfigurableAccessPolicyProvider) accessPolicyProvider; // ensure this policy contains a reference to the user and this policy is configurable (check proactively to prevent an exception) if (policy.getUsers().contains(removedUser.getIdentifier()) && configurableAccessPolicyProvider.isConfigurable(policy)) { final AccessPolicy.Builder builder = new AccessPolicy.Builder(policy).removeUser(removedUser.getIdentifier()); configurableAccessPolicyProvider.updateAccessPolicy(builder.build()); } } } return removedUser; } else { throw new IllegalStateException(MSG_NON_CONFIGURABLE_USERS); } }