Skip to content

Commit

Permalink
SHIBUI-2364
Browse files Browse the repository at this point in the history
GET ALL for multiple EntityDescriptors doesn't fetch EVERYTHING
  • Loading branch information
chasegawa committed Sep 8, 2022
1 parent 1062d8b commit 51395cd
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public ResponseEntity<?> deleteOne(@PathVariable String resourceId) throws Forbi
@GetMapping("/EntityDescriptors")
@Transactional
public ResponseEntity<?> getAll() throws ForbiddenException {
return ResponseEntity.ok(entityDescriptorService.getAllRepresentationsBasedOnUserAccess());
return ResponseEntity.ok(entityDescriptorService.getAllEntityDescriptorProjectionsBasedOnUserAccess());
}

@GetMapping("/EntityDescriptor/{resourceId}/Versions")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package edu.internet2.tier.shibboleth.admin.ui.repository;

import java.time.LocalDateTime;

public interface EntityDescriptorProjection {
default String getId() {
return getResourceId();
}
String getEntityID();
default String getEntityId() {
return getEntityID();
}
String getResourceId();
String getServiceProviderName();
String getCreatedBy();
LocalDateTime getCreatedDate();
boolean getServiceEnabled();
String getIdOfOwner();
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
* Repository to manage {@link EntityDescriptor} instances.
*/
public interface EntityDescriptorRepository extends JpaRepository<EntityDescriptor, Long> {
List<EntityDescriptorProjection> findAllBy();

List<EntityDescriptorProjection> findAllByIdOfOwner(String ownerId);

EntityDescriptor findByEntityID(String entityId);

Expand All @@ -34,4 +37,4 @@ public interface EntityDescriptorRepository extends JpaRepository<EntityDescript
*/
@Deprecated
List<EntityDescriptor> findAllByIdOfOwnerIsNull();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.repository;

public interface ProjectionIdAndName{
public interface ProjectionIdAndName {
String getResourceId();

String getName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
import edu.internet2.tier.shibboleth.admin.ui.domain.Attribute;
import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor;
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation;
import edu.internet2.tier.shibboleth.admin.ui.exception.PersistentEntityNotFound;
import edu.internet2.tier.shibboleth.admin.ui.exception.ForbiddenException;
import edu.internet2.tier.shibboleth.admin.ui.exception.InvalidPatternMatchException;
import edu.internet2.tier.shibboleth.admin.ui.exception.ObjectIdExistsException;
import edu.internet2.tier.shibboleth.admin.ui.exception.PersistentEntityNotFound;
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorProjection;

import java.util.ConcurrentModificationException;
import java.util.List;
Expand Down Expand Up @@ -67,9 +68,9 @@ EntityDescriptorRepresentation createNew(EntityDescriptorRepresentation edRepres
Iterable<EntityDescriptorRepresentation> getAllDisabledAndNotOwnedByAdmin() throws ForbiddenException;

/**
* @return a list of EntityDescriptorRepresentations that a user has the rights to access
* @return a list of EntityDescriptorProjections that a user has the rights to access
*/
List<EntityDescriptorRepresentation> getAllRepresentationsBasedOnUserAccess() throws ForbiddenException;
List<EntityDescriptorProjection> getAllEntityDescriptorProjectionsBasedOnUserAccess() throws ForbiddenException;

/**
* Given a list of attributes, generate an AttributeReleaseList
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import edu.internet2.tier.shibboleth.admin.ui.exception.InvalidPatternMatchException;
import edu.internet2.tier.shibboleth.admin.ui.exception.ObjectIdExistsException;
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects;
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorProjection;
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository;
import edu.internet2.tier.shibboleth.admin.ui.security.model.Group;
import edu.internet2.tier.shibboleth.admin.ui.security.model.Owner;
Expand Down Expand Up @@ -373,16 +374,16 @@ public Iterable<EntityDescriptorRepresentation> getAllDisabledAndNotOwnedByAdmin
}

@Override
public List<EntityDescriptorRepresentation> getAllRepresentationsBasedOnUserAccess() throws ForbiddenException {
public List<EntityDescriptorProjection> getAllEntityDescriptorProjectionsBasedOnUserAccess() throws ForbiddenException {
switch (userService.getCurrentUserAccess()) {
case ADMIN:
return entityDescriptorRepository.findAllStreamByCustomQuery().map(ed -> createRepresentationFromDescriptor(ed))
.collect(Collectors.toList());
List<EntityDescriptorProjection> o = entityDescriptorRepository.findAllBy();//.map(edProjection -> createRepresentationFromDescriptor(edProjection)).collect(Collectors.toList());
return o;
case GROUP:
User user = userService.getCurrentUser();
Group group = user.getGroup();
return entityDescriptorRepository.findAllStreamByIdOfOwner(group.getOwnerId())
.map(ed -> createRepresentationFromDescriptor(ed)).collect(Collectors.toList());
List<EntityDescriptorProjection> ed = entityDescriptorRepository.findAllByIdOfOwner(group.getOwnerId());//.map(ed -> createRepresentationFromDescriptor(ed)).collect(Collectors.toList());
return ed;
default:
throw new ForbiddenException();
}
Expand Down

0 comments on commit 51395cd

Please sign in to comment.