Skip to content
Snippets Groups Projects
Commit a60ddb67 authored by Andy Summers's avatar Andy Summers
Browse files

Reorganize namespaces for less clutter

parent 661a01b1
No related branches found
No related tags found
1 merge request!8Add UDDS attribute and refactor
<?php <?php
namespace edu\wisc\doit; namespace edu\wisc\doit\uwphps;
/** /**
* Default, concrete implementation of {@link UserDetails} to represent a UW user. * Default, concrete implementation of {@link UserDetails} to represent a UW user.
...@@ -20,7 +20,7 @@ class UWUserDetails implements UserDetails ...@@ -20,7 +20,7 @@ class UWUserDetails implements UserDetails
private $emailAddress; private $emailAddress;
/** @var string */ /** @var string */
private $source; private $source;
/** @var isisEmplid */ /** @var string */
private $isisEmplid; private $isisEmplid;
/** @var string */ /** @var string */
private $firstName; private $firstName;
......
<?php <?php
namespace edu\wisc\doit; namespace edu\wisc\doit\uwphps;
/** /**
* UserDetails defines a minimal representation of a user associated with UW. * UserDetails defines a minimal representation of a user associated with UW.
......
<?php <?php
namespace edu\wisc\doit; namespace edu\wisc\doit\uwphps;
/** /**
* TODO: Write documentation * UseDetailsProvider is an interface defining how to load an {@link UserDetails} and provides constants for
* supplied request header keys.
*/ */
interface UserDetailsProvider abstract class UserDetailsProvider
{ {
/** @var bool Flag indicating if headers are passed prefixed with 'HTTP_' */
protected $httpHeaders;
// Constants representing UW Federated login Shibboleth headers // Constants representing UW Federated login Shibboleth headers
const FED_EPPN = "eppn"; const FED_EPPN = "eppn";
...@@ -23,11 +27,32 @@ interface UserDetailsProvider ...@@ -23,11 +27,32 @@ interface UserDetailsProvider
const SOURCE = "source"; const SOURCE = "source";
const ISIS_EMPLID = "isisEmplid"; const ISIS_EMPLID = "isisEmplid";
/**
* UserDetailsProvider constructor.
* @param $http
*/
public function __construct($http = true)
{
$this->http = $http;
}
/** /**
* Map Shibboleth header values to an associative array. * Map Shibboleth header values to an associative array.
* *
* @return UserDetails * @return UserDetails
*/ */
public function loadUser(); abstract public function loadUser();
/**
* Map a Shibboleth attribute to its associated HTTP header name.
*
* @param string $attribute attribute to map
* @return string Shibboleth attribute name mapped to its equivalent HTTP header name
*/
protected function mapAttribute($attribute)
{
return 'HTTP_' . strtoupper($attribute);
}
} }
\ No newline at end of file
<?php <?php
namespace edu\wisc\doit; namespace edu\wisc\doit\uwphps\local;
use edu\wisc\doit\uwphps\UWUserDetails;
use edu\wisc\doit\uwphps\UserDetailsProvider;
/** /**
* LocalUserDetailsProvider provides a developer with a {@link UWUserDetails} suitable for use in local development. * LocalUserDetailsProvider provides a developer with a {@link UWUserDetails} suitable for use in local development.
*/ */
class LocalUserDetailsProvider implements UserDetailsProvider class LocalUserDetailsProvider extends UserDetailsProvider
{ {
/** @var string */ /** @var string */
...@@ -18,6 +21,7 @@ class LocalUserDetailsProvider implements UserDetailsProvider ...@@ -18,6 +21,7 @@ class LocalUserDetailsProvider implements UserDetailsProvider
*/ */
public function __construct($filePath) public function __construct($filePath)
{ {
parent::__construct(false);
$this->filePath = $filePath; $this->filePath = $filePath;
} }
......
<?php <?php
namespace edu\wisc\doit; namespace edu\wisc\doit\uwphps\preauth;
use edu\wisc\doit\uwphps\UWUserDetails;
use edu\wisc\doit\uwphps\UserDetailsProvider;
/** /**
* FederatedPreauthUserDetailsProvider provides an application with a {@link UWUserDetails} from Shibboleth attributes. * FederatedPreauthUserDetailsProvider is an implementation of {@link UserDetailsProvider} for loading users
* The attributes use the keys as defined by UW System, which are distinct from those used specifically by UWMSN. * authenticated with UW-System Federated login.
*
* {@see PreauthUserDetailsProvider} for loading users authenticated through UW-Madison login.
*/ */
class FederatedPreauthUserDetailsProvider implements UserDetailsProvider class FederatedPreauthUserDetailsProvider extends UserDetailsProvider
{ {
/** @var bool */
private $httpHeaders;
/**
* FederatedPreauthUserDetailsProvider constructor.
*
* @param bool $http flag indicating if Shibboleth attributes are forwarded as HTTP headers
*/
public function __construct($http = false)
{
$this->httpHeaders = $http;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
...@@ -62,15 +54,4 @@ class FederatedPreauthUserDetailsProvider implements UserDetailsProvider ...@@ -62,15 +54,4 @@ class FederatedPreauthUserDetailsProvider implements UserDetailsProvider
return $userDetails; return $userDetails;
} }
/**
* Map a Shibboleth attribute to its associated HTTP header name.
*
* @param string $attribute attribute to map
* @return string Shibboleth attribute name mapped to its equivalent HTTP header name
*/
private function mapAttribute($attribute)
{
return 'HTTP_' . strtoupper($attribute);
}
} }
<?php
namespace edu\wisc\doit\uwphps\preauth;
/**
* PreauthUserDetailsProvider is an implementation of {@link UserDetailsProvider} for loading users authenticated
* with UW-Madison login.
*
* {@see FederatedPreauthUserDetailsProvider} for loading users authenticated through UW-System Federated login.
*/
class PreauthUserDetailsProvider extends UserDetailsProvider
{
/**
* {@inheritdoc}
*/
public function loadUser()
{
}
}
<?php <?php
use edu\wisc\doit\UserDetailsProvider; use edu\wisc\doit\uwphps\UserDetailsProvider;
use edu\wisc\doit\FederatedPreauthUserDetailsProvider; use edu\wisc\doit\uwphps\preauth\FederatedPreauthUserDetailsProvider;
/** /**
* Tests for {@link FederatedPreauthUserDetailsProvider}. * Tests for {@link FederatedPreauthUserDetailsProvider}.
...@@ -27,7 +27,7 @@ class HTTPFederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_Tes ...@@ -27,7 +27,7 @@ class HTTPFederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_Tes
} }
$this->attributes = json_decode($jsonString, true); $this->attributes = json_decode($jsonString, true);
$this->userProvider = new FederatedPreauthUserDetailsProvider(true); $this->userProvider = new FederatedPreauthUserDetailsProvider();
putenv($this->mapAttribute(UserDetailsProvider::FED_EPPN) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_EPPN)]); putenv($this->mapAttribute(UserDetailsProvider::FED_EPPN) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_EPPN)]);
putenv($this->mapAttribute(UserDetailsProvider::FED_SPVI) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_SPVI)]); putenv($this->mapAttribute(UserDetailsProvider::FED_SPVI) . '=' . $this->attributes[$this->mapAttribute(UserDetailsProvider::FED_SPVI)]);
......
<?php <?php
use edu\wisc\doit\LocalUserDetailsProvider; use edu\wisc\doit\uwphps\local\LocalUserDetailsProvider;
/** /**
* Tests for {@link LocalUserDetailsProvider}. * Tests for {@link LocalUserDetailsProvider}.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment