. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\OAuthServer\League\Repositories; use Espo\Tools\OAuthServer\ClientValidator; use Espo\Tools\OAuthServer\League\Entities\ClientEntity; use Espo\Tools\OAuthServer\Repository\ClientRepository as Repository; use League\OAuth2\Server\Repositories\ClientRepositoryInterface; use SensitiveParameter; class ClientRepository implements ClientRepositoryInterface { public function __construct( private Repository $repository, private ClientValidator $clientValidator, ) {} public function getClientEntity(string $clientIdentifier): ?ClientEntity { $client = $this->repository->getActiveByIdentifier($clientIdentifier); if (!$client) { return null; } return ClientEntity::fromEntity($client); } public function validateClient( string $clientIdentifier, #[SensitiveParameter] ?string $clientSecret, ?string $grantType, ): bool { $client = $this->repository->getActiveByIdentifier($clientIdentifier); if (!$client) { return false; } return $this->clientValidator->validate($client, $clientSecret); } }