AccessPluginBase.php

Same filename in other branches
  1. 9 core/modules/views/src/Plugin/views/access/AccessPluginBase.php
  2. 8.9.x core/modules/views/src/Plugin/views/access/AccessPluginBase.php
  3. 10 core/modules/views/src/Plugin/views/access/AccessPluginBase.php

Namespace

Drupal\views\Plugin\views\access

File

core/modules/views/src/Plugin/views/access/AccessPluginBase.php

View source
<?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 = "deny_all",
 *   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.
     */
    public abstract 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.
     */
    public abstract function alterRouteDefinition(Route $route);

}

/**
 * @}
 */

Classes

Title Deprecated Summary
AccessPluginBase The base plugin to handle access control.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.