diff --git a/uw-spring-security-core/src/main/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImpl.java b/uw-spring-security-core/src/main/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImpl.java index cc5772f9e9d5a6dc1ba5812a800f82fe8e05c010..da5aa1b30d06489bbbd78c66a08bfdd95c202494 100644 --- a/uw-spring-security-core/src/main/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImpl.java +++ b/uw-spring-security-core/src/main/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImpl.java @@ -30,6 +30,7 @@ public class UdsPersonUserDetailsImpl implements UWUserDetails { private static final long serialVersionUID = 2930942419916444606L; public static final String NETID_IDNAME = "NETID"; + public static final String PVI_IDNAME = "PVI"; public static final String PHOTOID_IDNAME = "PHOTOID"; public static final String UWMSNSUDS_SOURCE = "UWMSNSUDS"; public static final String USER_DETAILS_SOURCE = "uds"; @@ -180,22 +181,24 @@ public class UdsPersonUserDetailsImpl implements UWUserDetails { /** * {@inheritDoc} - * - * This implementation always returns null. - * - * TODO it may be possible to extract a PVI value from person.getIdentifiers */ @Override public String getPvi() { + if(person.getIdentifiers() == null) { + return null; + } + for(Identifier identifier: person.getIdentifiers().getIdentifiers()) { + if(UWMSNSUDS_SOURCE.equals(identifier.getSource()) && PVI_IDNAME.equals(identifier.getIdName())) { + return identifier.getValue(); + } + } return null; } /** * {@inheritDoc} * - * This implementation always returns null. - * - * TODO it may be possible to extract a EPPN value from person.getIdentifiers + * This implementation always returns null; UDS Person does not return EPPN. */ @Override public String getEppn() { @@ -207,6 +210,7 @@ public class UdsPersonUserDetailsImpl implements UWUserDetails { * This implementation always returns null. * * TODO it may be possible to extract an emplid value from person.getIdentifiers + * Example observed: edu.wisc.services.uds.person.v1_1.Identifier@715ef617[source=UWMSNSS, idName=EMPLID, value=000123456] */ @Override public String getIsisEmplid() { diff --git a/uw-spring-security-core/src/test/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImplTest.java b/uw-spring-security-core/src/test/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImplTest.java index 036dfa9c10845c76f6386bf871921710db53d068..9397790a0aa4263628e8cc56a7a48aa6a091a094 100644 --- a/uw-spring-security-core/src/test/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImplTest.java +++ b/uw-spring-security-core/src/test/java/edu/wisc/uwss/uds/UdsPersonUserDetailsImplTest.java @@ -120,4 +120,23 @@ public class UdsPersonUserDetailsImplTest { assertEquals("Badger", new UdsPersonUserDetailsImpl(person).getLastName()); } + /** + * Confirm successful result for {@link UdsPersonUserDetailsImpl#getPvi()}. + */ + @Test + public void getPvi_success() { + String pvi = "UW111E111"; + Identifier identifier = new Identifier(); + identifier.setSource("UWMSNSUDS"); + identifier.setIdName("PVI"); + identifier.setValue(pvi); + + Identifiers identifiers = new Identifiers(); + identifiers.getIdentifiers().add(identifier); + Person person = new Person(); + person.setIdentifiers(identifiers); + + assertEquals(pvi, new UdsPersonUserDetailsImpl(person).getPvi()); + } + }