Version 1
[yaffs-website] / web / core / modules / views / src / Plugin / views / access / AccessPluginBase.php
diff --git a/web/core/modules/views/src/Plugin/views/access/AccessPluginBase.php b/web/core/modules/views/src/Plugin/views/access/AccessPluginBase.php
new file mode 100644 (file)
index 0000000..ee568e1
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+namespace Drupal\views\Plugin\views\access;
+
+use Drupal\Core\Session\AccountInterface;
+use Drupal\views\Plugin\views\PluginBase;
+use Symfony\Component\Routing\Route;
+
+/**
+ * @defgroup views_access_plugins Views access plugins
+ * @{
+ * Plugins to handle access checking for views.
+ *
+ * Access plugins are responsible for controlling access to the view.
+ *
+ * Access plugins extend \Drupal\views\Plugin\views\access\AccessPluginBase,
+ * implementing the access() and alterRouteDefinition() methods. They must be
+ * annotated with \Drupal\views\Annotation\ViewsAccess annotation, and they
+ * must be in namespace directory Plugin\views\access.
+ *
+ * @ingroup views_plugins
+ * @see plugin_api
+ */
+
+/**
+ * The base plugin to handle access control.
+ *
+ * Access plugins are responsible for controlling a user's access to the view.
+ * Views includes plugins for checking user roles and individual permissions.
+ *
+ * To define an access control plugin, extend this base class. Your access
+ * plugin should have an annotation that includes the plugin's metadata, for
+ * example:
+ * @Plugin(
+ *   id = "denyall",
+ *   title = @Translation("No Access"),
+ *   help = @Translation("Will not be accessible.")
+ * )
+ * The definition should include the following keys:
+ * - id: The unique identifier of your access plugin.
+ * - title: The human-readable name for your access plugin.
+ * - help: A short help message for your plugin.
+ *
+ * @see \Drupal\views\Plugin\ViewsPluginManager
+ */
+abstract class AccessPluginBase extends PluginBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function summaryTitle() {
+    return $this->t('Unknown');
+  }
+
+  /**
+   * Determine if the current user has access or not.
+   *
+   * @param \Drupal\Core\Session\AccountInterface $account
+   *   The user who wants to access this view.
+   *
+   * @return bool
+   *   Returns whether the user has access to the view.
+   */
+  abstract public function access(AccountInterface $account);
+
+  /**
+   * Allows access plugins to alter the route definition of a view.
+   *
+   * Likely the access plugin will add new requirements, so its custom access
+   * checker can be applied.
+   *
+   * @param \Symfony\Component\Routing\Route $route
+   *   The route to change.
+   */
+  abstract public function alterRouteDefinition(Route $route);
+
+}
+
+/**
+ * @}
+ */