*/ final class WebTokenEncoder implements HeaderAwareJWTEncoderInterface { /** * @var AccessTokenBuilder|null */ private $accessTokenBuilder; /** * @var AccessTokenLoader|null */ private $accessTokenLoader; public function __construct(?AccessTokenBuilder $accessTokenBuilder, ?AccessTokenLoader $accessTokenLoader) { $this->accessTokenBuilder = $accessTokenBuilder; $this->accessTokenLoader = $accessTokenLoader; } /** * {@inheritdoc} */ public function encode(array $payload, array $header = []) { if (!$this->accessTokenBuilder) { throw new \LogicException('The access token issuance features are not enabled.'); } try { return $this->accessTokenBuilder->build($header, $payload); } catch (\InvalidArgumentException $e) { throw new JWTEncodeFailureException(JWTEncodeFailureException::INVALID_CONFIG, 'An error occurred while trying to encode the JWT token. Please verify your configuration (private key/passphrase)', $e, $payload); } } /** * {@inheritdoc} */ public function decode($token) { if (!$this->accessTokenLoader) { throw new \LogicException('The access token verification features are not enabled.'); } try { return $this->accessTokenLoader->load($token); } catch (JWTFailureException $e) { throw $e; } } }