. * * 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\Entities; use Espo\Tools\OAuthServer\ClientType; use Espo\Tools\OAuthServer\Entities\Client; use League\OAuth2\Server\Entities\ClientEntityInterface; use UnexpectedValueException; class ClientEntity implements ClientEntityInterface { /** * @param non-empty-string $identifier * @param string[] $redirectUri */ public function __construct( public string $entityId, private string $identifier, private string $name, private array $redirectUri, private bool $isConfidential, ) {} public static function fromEntity(Client $entity): self { return new self( entityId: $entity->getId(), identifier: $entity->getIdentifier() ?? throw new UnexpectedValueException("No client identifier."), name: $entity->getName() ?? $entity->getId(), redirectUri: $entity->getRedirectUris(), isConfidential: $entity->getClientType() === ClientType::Confidential, ); } /** * @return non-empty-string */ public function getIdentifier(): string { return $this->identifier; } public function getName(): string { return $this->name; } /** * @return string[] */ public function getRedirectUri(): array { return $this->redirectUri; } public function isConfidential(): bool { return $this->isConfidential; } }