for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Sludio\HelperBundle\Openidconnect\Specification;
use Lcobucci\JWT\Token;
class ValidatorChain
{
/**
* @var array
*/
protected $validators = [];
protected $messages = [];
* @param SpecificationInterface[] $validators
*
* @return $this
public function setValidators(array $validators)
$this->validators = [];
foreach ($validators as $validator) {
$this->addValidator($validator);
}
return $this;
* @param string $claim
* @param SpecificationInterface $validator
public function addValidator(SpecificationInterface $validator)
$this->validators[$validator->getName()] = $validator;
* @param array $data
* @param Token $token
* @return bool
public function validate(array $data, Token $token)
$valid = true;
foreach ($this->validators as $claim => $validator) {
if ($validator->isRequired() && false === $token->hasClaim($claim)) {
$valid = false;
$this->messages[$claim] = sprintf("Missing required value for claim %s", $claim);
continue;
} elseif (empty($data[$claim]) || false === $token->hasClaim($claim)) {
if (!$validator->isSatisfiedBy($data[$claim], $token->getClaim($claim))) {
$this->messages[$claim] = $validator->getMessage();
return $valid;
* @param $name
public function hasValidator($name)
return array_key_exists($name, $this->validators);
* @return mixed
public function getValidator($name)
return $this->validators[$name];
* @return array
public function getMessages()
return $this->messages;