diff --git a/src/Factory/AuthorizationServerFactory.php b/src/Factory/AuthorizationServerFactory.php index 2695e6a..a05fe0b 100644 --- a/src/Factory/AuthorizationServerFactory.php +++ b/src/Factory/AuthorizationServerFactory.php @@ -14,11 +14,30 @@ class AuthorizationServerFactory /** @var Config */ private $config; + /** @var RepositoryFactory */ + private $repositoryFactory; + //////////////////////////////// PUBLIC API \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ final public function __construct(Config $config) { $this->config = $config; + $client = $config->getClient(); + $grantTypes = $config->getGrantTypes(); + $this->repositoryFactory = new RepositoryFactory([ + Repository::CLIENT => new Client( + $client->getIdentifier(), + $client->getSecret(), + $client->getName(), + $grantTypes, + $client->getRedirectUris() + ), + ]); + } + + final public function setRepository($type, $repository) + { + $this->repositoryFactory->setRepository($type, $repository); } final public function create() : AuthorizationServer @@ -30,15 +49,7 @@ final public function create() : AuthorizationServer $grantTypes = $config->getGrantTypes(); $keys = $config->getKeys(); - $repositoryFactory = new RepositoryFactory([ - Repository::CLIENT => new Client( - $client->getIdentifier(), - $client->getSecret(), - $client->getName(), - $grantTypes, - $client->getRedirectUris() - ), - ]); + $repositoryFactory = $this->repositoryFactory; $server = new AuthorizationServer( $repositoryFactory->createClientRepository(), diff --git a/src/Factory/RepositoryFactory.php b/src/Factory/RepositoryFactory.php index d71fe08..5cac12d 100644 --- a/src/Factory/RepositoryFactory.php +++ b/src/Factory/RepositoryFactory.php @@ -26,6 +26,11 @@ public function __construct(array $repositories = []) $this->repositories = $repositories; } + public function setRepository($type, $repository) + { + $this->repositories[$type] = $repository; + } + final public function createAccessTokenRepository() : AccessTokenRepositoryInterface { return $this->createOnce(Repository::ACCESS_TOKEN);