diff core/lib/Drupal/Core/Session/MetadataBag.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/lib/Drupal/Core/Session/MetadataBag.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,58 @@
+<?php
+
+namespace Drupal\Core\Session;
+
+use Drupal\Core\Site\Settings;
+use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag as SymfonyMetadataBag;
+
+/**
+ * Provides a container for application specific session metadata.
+ */
+class MetadataBag extends SymfonyMetadataBag {
+
+  /**
+   * The key used to store the CSRF token seed in the session.
+   */
+  const CSRF_TOKEN_SEED = 's';
+
+  /**
+   * Constructs a new metadata bag instance.
+   *
+   * @param \Drupal\Core\Site\Settings $settings
+   *   The settings instance.
+   */
+  public function __construct(Settings $settings) {
+    $update_threshold = $settings->get('session_write_interval', 180);
+    parent::__construct('_sf2_meta', $update_threshold);
+  }
+
+  /**
+   * Set the CSRF token seed.
+   *
+   * @param string $csrf_token_seed
+   *   The per-session CSRF token seed.
+   */
+  public function setCsrfTokenSeed($csrf_token_seed) {
+    $this->meta[static::CSRF_TOKEN_SEED] = $csrf_token_seed;
+  }
+
+  /**
+   * Get the CSRF token seed.
+   *
+   * @return string|null
+   *   The per-session CSRF token seed or null when no value is set.
+   */
+  public function getCsrfTokenSeed() {
+    if (isset($this->meta[static::CSRF_TOKEN_SEED])) {
+      return $this->meta[static::CSRF_TOKEN_SEED];
+    }
+  }
+
+  /**
+   * Clear the CSRF token seed.
+   */
+  public function clearCsrfTokenSeed() {
+    unset($this->meta[static::CSRF_TOKEN_SEED]);
+  }
+
+}