From bfcab294a339e7037fe570bdb7a1cae97b70493e Mon Sep 17 00:00:00 2001 From: Yvo Brevoort Date: Mon, 15 Dec 2025 19:58:57 +0100 Subject: [PATCH 1/3] make repositoryFactory configurable so we can plug in our own --- src/Factory/AuthorizationServerFactory.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Factory/AuthorizationServerFactory.php b/src/Factory/AuthorizationServerFactory.php index 2695e6a..8ead2c4 100644 --- a/src/Factory/AuthorizationServerFactory.php +++ b/src/Factory/AuthorizationServerFactory.php @@ -14,6 +14,9 @@ class AuthorizationServerFactory /** @var Config */ private $config; + /** @var RepositoryFactory */ + private $repositoryFactory; + //////////////////////////////// PUBLIC API \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ final public function __construct(Config $config) @@ -21,6 +24,11 @@ final public function __construct(Config $config) $this->config = $config; } + final public function setRepositoryFactory(RepositoryFactory $repositoryFactory) + { + $this->repositoryFactory = $repositoryFactory; + } + final public function create() : AuthorizationServer { $config = $this->config; @@ -30,7 +38,7 @@ final public function create() : AuthorizationServer $grantTypes = $config->getGrantTypes(); $keys = $config->getKeys(); - $repositoryFactory = new RepositoryFactory([ + $repositoryFactory = $this->repositoryFactory ?? new RepositoryFactory([ Repository::CLIENT => new Client( $client->getIdentifier(), $client->getSecret(), From 4468854f87af23bcc9633d9c73e08a77fb1556dc Mon Sep 17 00:00:00 2001 From: Yvo Brevoort Date: Mon, 15 Dec 2025 21:08:35 +0100 Subject: [PATCH 2/3] add a setRepository function for more flexibility --- src/Factory/AuthorizationServerFactory.php | 24 ++++++++++++---------- src/Factory/RepositoryFactory.php | 5 +++++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Factory/AuthorizationServerFactory.php b/src/Factory/AuthorizationServerFactory.php index 8ead2c4..87d52ed 100644 --- a/src/Factory/AuthorizationServerFactory.php +++ b/src/Factory/AuthorizationServerFactory.php @@ -22,11 +22,21 @@ class AuthorizationServerFactory final public function __construct(Config $config) { $this->config = $config; + $client = $config->getClient(); + $this->repositoryFactory = new RepositoryFactory([ + Repository::CLIENT => new Client( + $client->getIdentifier(), + $client->getSecret(), + $client->getName(), + $grantTypes, + $client->getRedirectUris() + ), + ]); } - final public function setRepositoryFactory(RepositoryFactory $repositoryFactory) + final public function setRepository($type, $repository) { - $this->repositoryFactory = $repositoryFactory; + $this->repositoryFactory->setRepository($type, $repository); } final public function create() : AuthorizationServer @@ -38,15 +48,7 @@ final public function create() : AuthorizationServer $grantTypes = $config->getGrantTypes(); $keys = $config->getKeys(); - $repositoryFactory = $this->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); From 91f724c88f9ac4c1b827506e187b5eda5ff30b15 Mon Sep 17 00:00:00 2001 From: Yvo Brevoort Date: Mon, 15 Dec 2025 21:10:06 +0100 Subject: [PATCH 3/3] add missing grant types --- src/Factory/AuthorizationServerFactory.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Factory/AuthorizationServerFactory.php b/src/Factory/AuthorizationServerFactory.php index 87d52ed..a05fe0b 100644 --- a/src/Factory/AuthorizationServerFactory.php +++ b/src/Factory/AuthorizationServerFactory.php @@ -23,6 +23,7 @@ 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(),