Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
CRAP | |
0.00% |
0 / 48 |
| Permission | |
0.00% |
0 / 1 |
|
0.00% |
0 / 10 |
156 | |
0.00% |
0 / 48 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| access | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| alterRouteDefinition | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| summaryTitle | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| defineOptions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| buildOptionsForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 16 |
|||
| getCacheMaxAge | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getCacheContexts | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getCacheTags | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\user\Plugin\views\access\Permission. | |
| */ | |
| namespace Drupal\user\Plugin\views\access; | |
| use Drupal\Core\Cache\Cache; | |
| use Drupal\Core\Cache\CacheableDependencyInterface; | |
| use Drupal\Core\Extension\ModuleHandlerInterface; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Session\AccountInterface; | |
| use Drupal\user\PermissionHandlerInterface; | |
| use Drupal\views\Plugin\views\access\AccessPluginBase; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| use Symfony\Component\Routing\Route; | |
| /** | |
| * Access plugin that provides permission-based access control. | |
| * | |
| * @ingroup views_access_plugins | |
| * | |
| * @ViewsAccess( | |
| * id = "perm", | |
| * title = @Translation("Permission"), | |
| * help = @Translation("Access will be granted to users with the specified permission string.") | |
| * ) | |
| */ | |
| class Permission extends AccessPluginBase implements CacheableDependencyInterface { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected $usesOptions = TRUE; | |
| /** | |
| * The permission handler. | |
| * | |
| * @var \Drupal\user\PermissionHandlerInterface | |
| */ | |
| protected $permissionHandler; | |
| /** | |
| * The module handler. | |
| * | |
| * @var \Drupal\Core\Extension\ModuleHandlerInterface | |
| */ | |
| protected $moduleHandler; | |
| /** | |
| * Constructs a Permission object. | |
| * | |
| * @param array $configuration | |
| * A configuration array containing information about the plugin instance. | |
| * @param string $plugin_id | |
| * The plugin_id for the plugin instance. | |
| * @param mixed $plugin_definition | |
| * The plugin implementation definition. | |
| * @param \Drupal\user\PermissionHandlerInterface $permission_handler | |
| * The permission handler. | |
| * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler | |
| * The module handler. | |
| */ | |
| public function __construct(array $configuration, $plugin_id, $plugin_definition, PermissionHandlerInterface $permission_handler, ModuleHandlerInterface $module_handler) { | |
| parent::__construct($configuration, $plugin_id, $plugin_definition); | |
| $this->permissionHandler = $permission_handler; | |
| $this->moduleHandler = $module_handler; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | |
| return new static( | |
| $configuration, | |
| $plugin_id, | |
| $plugin_definition, | |
| $container->get('user.permissions'), | |
| $container->get('module_handler') | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function access(AccountInterface $account) { | |
| return $account->hasPermission($this->options['perm']); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function alterRouteDefinition(Route $route) { | |
| $route->setRequirement('_permission', $this->options['perm']); | |
| } | |
| public function summaryTitle() { | |
| $permissions = $this->permissionHandler->getPermissions(); | |
| if (isset($permissions[$this->options['perm']])) { | |
| return $permissions[$this->options['perm']]['title']; | |
| } | |
| return $this->t($this->options['perm']); | |
| } | |
| protected function defineOptions() { | |
| $options = parent::defineOptions(); | |
| $options['perm'] = array('default' => 'access content'); | |
| return $options; | |
| } | |
| public function buildOptionsForm(&$form, FormStateInterface $form_state) { | |
| parent::buildOptionsForm($form, $form_state); | |
| // Get list of permissions | |
| $perms = []; | |
| $permissions = $this->permissionHandler->getPermissions(); | |
| foreach ($permissions as $perm => $perm_item) { | |
| $provider = $perm_item['provider']; | |
| $display_name = $this->moduleHandler->getName($provider); | |
| $perms[$display_name][$perm] = strip_tags($perm_item['title']); | |
| } | |
| $form['perm'] = array( | |
| '#type' => 'select', | |
| '#options' => $perms, | |
| '#title' => $this->t('Permission'), | |
| '#default_value' => $this->options['perm'], | |
| '#description' => $this->t('Only users with the selected permission flag will be able to access this display.'), | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getCacheMaxAge() { | |
| return Cache::PERMANENT; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getCacheContexts() { | |
| return ['user.permissions']; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getCacheTags() { | |
| return []; | |
| } | |
| } |