Mercurial > hg > isophonics-drupal-site
annotate core/lib/Drupal/Core/PageCache/ChainRequestPolicy.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 4c8ae668cc8c |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\Core\PageCache; |
Chris@0 | 4 |
Chris@0 | 5 use Symfony\Component\HttpFoundation\Request; |
Chris@0 | 6 |
Chris@0 | 7 /** |
Chris@0 | 8 * Implements a compound request policy. |
Chris@0 | 9 * |
Chris@0 | 10 * When evaluating the compound policy, all of the contained rules are applied |
Chris@0 | 11 * to the request. The overall result is computed according to the following |
Chris@0 | 12 * rules: |
Chris@0 | 13 * |
Chris@0 | 14 * <ol> |
Chris@0 | 15 * <li>Returns static::DENY if any of the rules evaluated to static::DENY</li> |
Chris@0 | 16 * <li>Returns static::ALLOW if at least one of the rules evaluated to |
Chris@0 | 17 * static::ALLOW and none to static::DENY</li> |
Chris@0 | 18 * <li>Otherwise returns NULL</li> |
Chris@0 | 19 * </ol> |
Chris@0 | 20 */ |
Chris@0 | 21 class ChainRequestPolicy implements ChainRequestPolicyInterface { |
Chris@0 | 22 |
Chris@0 | 23 /** |
Chris@0 | 24 * A list of policy rules to apply when this policy is evaluated. |
Chris@0 | 25 * |
Chris@0 | 26 * @var \Drupal\Core\PageCache\RequestPolicyInterface[] |
Chris@0 | 27 */ |
Chris@0 | 28 protected $rules = []; |
Chris@0 | 29 |
Chris@0 | 30 /** |
Chris@0 | 31 * {@inheritdoc} |
Chris@0 | 32 */ |
Chris@0 | 33 public function check(Request $request) { |
Chris@0 | 34 $final_result = NULL; |
Chris@0 | 35 |
Chris@0 | 36 foreach ($this->rules as $rule) { |
Chris@0 | 37 $result = $rule->check($request); |
Chris@0 | 38 if ($result === static::DENY) { |
Chris@0 | 39 return $result; |
Chris@0 | 40 } |
Chris@0 | 41 elseif ($result === static::ALLOW) { |
Chris@0 | 42 $final_result = $result; |
Chris@0 | 43 } |
Chris@0 | 44 elseif (isset($result)) { |
Chris@0 | 45 throw new \UnexpectedValueException('Return value of RequestPolicyInterface::check() must be one of RequestPolicyInterface::ALLOW, RequestPolicyInterface::DENY or NULL'); |
Chris@0 | 46 } |
Chris@0 | 47 } |
Chris@0 | 48 |
Chris@0 | 49 return $final_result; |
Chris@0 | 50 } |
Chris@0 | 51 |
Chris@0 | 52 /** |
Chris@0 | 53 * {@inheritdoc} |
Chris@0 | 54 */ |
Chris@0 | 55 public function addPolicy(RequestPolicyInterface $policy) { |
Chris@0 | 56 $this->rules[] = $policy; |
Chris@0 | 57 return $this; |
Chris@0 | 58 } |
Chris@0 | 59 |
Chris@0 | 60 } |