/** * Evaluates any RequestPatterns of the given token to determine whether it is active for the current request * - If no RequestPattern is configured for this token, it is active * - Otherwise it is active only if at least one configured RequestPattern per type matches the request * * @param TokenInterface $token * @return bool TRUE if the given token is active, otherwise FALSE */ protected function isTokenActive(TokenInterface $token) { if (!$token->hasRequestPatterns()) { return true; } $requestPatternsByType = []; /** @var $requestPattern RequestPatternInterface */ foreach ($token->getRequestPatterns() as $requestPattern) { $patternType = TypeHandling::getTypeForValue($requestPattern); if (isset($requestPatternsByType[$patternType]) && $requestPatternsByType[$patternType] === true) { continue; } $requestPatternsByType[$patternType] = $requestPattern->matchRequest($this->request); } return !in_array(false, $requestPatternsByType, true); }