diff --git a/src/main/edu/wisc/doit/uwphps/UWUserDetails.php b/src/main/edu/wisc/doit/uwphps/UWUserDetails.php index 1ba3f6c79cf727d645b58f16d62c2d6c51ad9aa7..958066ec5d62760c1943c79db002476745e36ac5 100644 --- a/src/main/edu/wisc/doit/uwphps/UWUserDetails.php +++ b/src/main/edu/wisc/doit/uwphps/UWUserDetails.php @@ -14,7 +14,7 @@ class UWUserDetails implements UserDetails private $pvi; /** @var string */ private $fullName; - /** @var string[] */ + /** @var array */ private $udds; /** @var string */ private $emailAddress; @@ -32,7 +32,7 @@ class UWUserDetails implements UserDetails * @param string $eppn * @param string $pvi * @param string $fullName - * @param string[] $udds + * @param array $udds * @param string $emailAddress * @param string $source * @param string $isisEmplid diff --git a/src/main/edu/wisc/doit/uwphps/UserDetails.php b/src/main/edu/wisc/doit/uwphps/UserDetails.php index d3a36eae017ff3b3c8e1b2cb7a1ba47a7f003f25..6153cee0f1a4cc2ab1adb08a288c631f49ec5aa7 100644 --- a/src/main/edu/wisc/doit/uwphps/UserDetails.php +++ b/src/main/edu/wisc/doit/uwphps/UserDetails.php @@ -34,7 +34,7 @@ interface UserDetails /** * A never null, but possibly empty, array of strings each representing the UDDS IDs of the group this user is a member of. * - * @return string[] + * @return array */ public function getUddsMembership(); diff --git a/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php index 3f604e3b3b07c561e90e60ef7bb0b14b20ebc151..3231b70f190d14a60f99696c0eab61085b4be094 100644 --- a/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php @@ -20,6 +20,9 @@ abstract class UserDetailsProvider const SOURCE = "source"; const ISIS_EMPLID = "isisEmplid"; + // Delimiter used by multi-valued headers + const DELIMITER = ';'; + /** * UserDetailsProvider constructor. * @param $http diff --git a/src/main/edu/wisc/doit/uwphps/local/LocalUserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/local/LocalUserDetailsProvider.php index 0c465ad1d6c098307196052f5e65a0368c2cea12..7a15d83689c9ed9a2ca9b4f00754f8991b455192 100644 --- a/src/main/edu/wisc/doit/uwphps/local/LocalUserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/local/LocalUserDetailsProvider.php @@ -41,7 +41,7 @@ class LocalUserDetailsProvider extends PreauthUserDetailsProvider $attributes[static::EPPN], $attributes[static::PVI], $attributes[static::FULL_NAME], - $attributes[static::UDDS], + explode(static::DELIMITER, $attributes[static::UDDS]), $attributes[static::EMAIL], $attributes[static::SOURCE], $attributes[static::ISIS_EMPLID], diff --git a/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php index 2f0454d7b1fb1178231b52bb8364b58e79df01a5..e8d896b553bb289aad358fadf5778c4c48d33045 100644 --- a/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php @@ -37,7 +37,7 @@ class FederatedPreauthUserDetailsProvider extends UserDetailsProvider getenv($this->mapAttribute(static::EPPN)), getenv($this->mapAttribute(static::SPVI)), getenv($this->mapAttribute(static::FULL_NAME)), - getenv($this->mapAttribute(static::UDDS)), + explode(static::DELIMITER, getenv($this->mapAttribute(static::UDDS))), getenv($this->mapAttribute(static::EMAIL)), getenv($this->mapAttribute(static::SOURCE)), getenv($this->mapAttribute(static::ISIS_EMPLID)), diff --git a/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php index 8925fdba7fcf16d29d4b55c223b9e174ef11f594..79631f24f7b0b585a08fd13fe5722c68d67e72f4 100644 --- a/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php @@ -39,7 +39,7 @@ class PreauthUserDetailsProvider extends UserDetailsProvider getenv($this->mapAttribute(static::EPPN)), getenv($this->mapAttribute(static::PVI)), getenv($this->mapAttribute(static::FULL_NAME)), - getenv($this->mapAttribute(static::UDDS)), + explode(static::DELIMITER, getenv($this->mapAttribute(static::UDDS))), getenv($this->mapAttribute(static::EPPN)), getenv($this->mapAttribute(static::SOURCE)), getenv($this->mapAttribute(static::ISIS_EMPLID)), diff --git a/src/main/resources/localuser.json b/src/main/resources/localuser.json index 148a35285eddb928324f43eeb5153d1bafbb1fed..731030b5374e207e9dba0c72eb56be13e4673655 100644 --- a/src/main/resources/localuser.json +++ b/src/main/resources/localuser.json @@ -5,10 +5,7 @@ "cn": "BUCKINGHAM BADGER", "givenName": "BUCKINGHAM", "sn": "BADGER", - "wiscEduUDDS": [ - "UW123A456", - "UW234A567" - ], + "wiscEduUDDS": "A061234;A072345", "mail": "bucky.badger@wisc.edu", "source": "a_source", "isisEmplid": "123456789" diff --git a/src/test/edu/wisc/doit/uwphps/preauth/HTTPFederatedPreauthUserDetailsProviderTest.php b/src/test/edu/wisc/doit/uwphps/preauth/HTTPFederatedPreauthUserDetailsProviderTest.php index 09ddc42697fbbf443fe78e2b730a38a36e7cbf2a..7d07e2b9ab31d6f3f482351e8a083b327f175b14 100644 --- a/src/test/edu/wisc/doit/uwphps/preauth/HTTPFederatedPreauthUserDetailsProviderTest.php +++ b/src/test/edu/wisc/doit/uwphps/preauth/HTTPFederatedPreauthUserDetailsProviderTest.php @@ -33,7 +33,7 @@ class HTTPFederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_Tes putenv($this->mapAttribute(FederatedPreauthUserDetailsProvider::FULL_NAME) . '=' . $this->attributes[$this->mapAttribute(FederatedPreauthUserDetailsProvider::FULL_NAME)]); putenv($this->mapAttribute(FederatedPreauthUserDetailsProvider::FIRST_NAME) . '=' . $this->attributes[$this->mapAttribute(FederatedPreauthUserDetailsProvider::FIRST_NAME)]); putenv($this->mapAttribute(FederatedPreauthUserDetailsProvider::LAST_NAME) . '=' . $this->attributes[$this->mapAttribute(FederatedPreauthUserDetailsProvider::LAST_NAME)]); - putenv($this->mapAttribute(UserDetailsProvider::UDDS) . '=' . implode(",", $this->attributes[$this->mapAttribute(UserDetailsProvider::UDDS)])); + putenv($this->mapAttribute(UserDetailsProvider::UDDS) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::UDDS)]); putenv($this->mapAttribute(FederatedPreauthUserDetailsProvider::EMAIL) . '=' . $this->attributes[$this->mapAttribute(FederatedPreauthUserDetailsProvider::EMAIL)]); putenv($this->mapAttribute(UserDetailsProvider::SOURCE) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::SOURCE)]); putenv($this->mapAttribute(UserDetailsProvider::ISIS_EMPLID) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::ISIS_EMPLID)]); @@ -55,6 +55,7 @@ class HTTPFederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_Tes $this->assertEquals("123456789", $user->getIsisEmplid()); $this->assertEquals("BUCKINGHAM", $user->getFirstName()); $this->assertEquals("BADGER", $user->getLastName()); + $this->assertEquals(["A061234", "A072345"], $user->getUddsMembership()); } /** diff --git a/src/test/resources/localuser.json b/src/test/resources/localuser.json index 447c367bf82a35a856e8fe729f5eb92cb62bfc86..60704689076cf537659671938530c882a491c77f 100644 --- a/src/test/resources/localuser.json +++ b/src/test/resources/localuser.json @@ -5,10 +5,7 @@ "cn": "BUCKINGHAM BADGER", "givenName": "BUCKINGHAM", "sn": "BADGER", - "wiscEduUDDS": [ - "UW123A456", - "UW234A567" - ], + "wiscEduUDDS": "A061234;A072345", "mail": "bucky.badger@wisc.edu", "source": "a_source", "wiscEduIsisEmplid": "123456789" diff --git a/src/test/resources/testuser_http.json b/src/test/resources/testuser_http.json index 7de908f421b737c919579067ef9789b1286303ea..0d7f59178d65cfa4a37197a1bf1a828d5237fddf 100644 --- a/src/test/resources/testuser_http.json +++ b/src/test/resources/testuser_http.json @@ -5,10 +5,7 @@ "HTTP_EDUWISCONSINCOMMONNAME": "BUCKINGHAM BADGER", "HTTP_EDUWISCONSINGIVENNAME": "BUCKINGHAM", "HTTP_EDUWISCONSINSURNAME": "BADGER", - "HTTP_UDDS": [ - "UW123A456", - "UW234A567" - ], + "HTTP_UDDS": "A061234;A072345", "HTTP_EDUWISCONSINEMAILADDRESS": "bucky.badger@wisc.edu", "HTTP_SOURCE": "a_source", "HTTP_ISISEMPLID": "123456789",