You are here

class BakeryRequestPolicy in Bakery Single Sign-On System 8.2

A policy allowing delivery of cached pages when there is no session open.

Do not serve cached pages to authenticated users, or to anonymous users when CHOCOLATECHIPCOOKIE exist in the request header.

Hierarchy

Expanded class hierarchy of BakeryRequestPolicy

1 string reference to 'BakeryRequestPolicy'
bakery.services.yml in ./bakery.services.yml
bakery.services.yml
1 service uses BakeryRequestPolicy
bakery.page_cache_request_policy in ./bakery.services.yml
Drupal\bakery\PageCache\BakeryRequestPolicy

File

src/PageCache/BakeryRequestPolicy.php, line 14

Namespace

Drupal\bakery\PageCache
View source
class BakeryRequestPolicy implements RequestPolicyInterface {

  /**
   * {@inheritdoc}
   */
  public function check(Request $request) {
    if ($this
      ->pregArrayKeyExists('/^CHOCOLATECHIP/', $request->cookies
      ->all())) {
      return self::DENY;
    }
    return NULL;
  }

  /**
   * Check pattern key exist in array.
   *
   * @param string $pattern
   *   Regex pattern to match key.
   * @param array $array
   *   Array from which key needs to be checked.
   *
   * @return int
   *   if found return positive number else -1
   */
  private function pregArrayKeyExists($pattern, $array) {
    $keys = array_keys($array);
    return (int) preg_grep($pattern, $keys);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BakeryRequestPolicy::check public function Determines whether delivery of a cached page should be attempted. Overrides RequestPolicyInterface::check
BakeryRequestPolicy::pregArrayKeyExists private function Check pattern key exist in array.
RequestPolicyInterface::ALLOW constant Allow delivery of cached pages.
RequestPolicyInterface::DENY constant Deny delivery of cached pages.