@Transactional public void deleteAuthorizedMembership(TenantId tenantId, UserId userId, RoleDescriptor roleDescriptor, GroupDescriptor groupDescriptor) { checkTenantMatch(tenantId, userId); AuthorizedMembership authorizedMembership = authorizedMembershipRepository.findByUserIdAndRoleId(userId.getId(), roleDescriptor.getRoleId(), groupDescriptor.getGroupId()); if (authorizedMembership != null) { authorizedMembershipRepository.delete(authorizedMembership); applicationEventPublisher.publishEvent(new AuthorizedMembershipDeletedEvent(this, tenantId, roleDescriptor, userId, groupDescriptor)); } }
@Transactional public void createAuthorizedMembershipIfNotExists(TenantId tenantId, UserId userId, RoleDescriptor roleDescriptor, GroupDescriptor groupDescriptor) { checkTenantMatch(tenantId, userId); AuthorizedMembership membership = authorizedMembershipRepository.findByUserIdAndRoleId(userId.getId(), roleDescriptor.getRoleId(), groupDescriptor.getGroupId()); if (membership == null) { Role r = roleRepository.findOne(roleDescriptor.getRoleId()); User u = userRepository.findOne(userId.getId()); Group g = groupRepository.findOne(groupDescriptor.getGroupId()); AuthorizedMembership authorizedMembership = new AuthorizedMembership(u, r, g); authorizedMembershipRepository.save(authorizedMembership); applicationEventPublisher.publishEvent(new AuthorizedMembershipCreatedEvent(this, tenantId, roleDescriptor, userId, groupDescriptor)); } }