class User

Same name in this branch
  1. main core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  2. main core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  3. main core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  4. main core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  5. main core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
Same name and namespace in other branches
  1. 11.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  2. 11.x core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  3. 11.x core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  4. 11.x core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  5. 11.x core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  6. 11.x core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
  7. 10 core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  8. 10 core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  9. 10 core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  10. 10 core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  11. 10 core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  12. 10 core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
  13. 9 core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  14. 9 core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  15. 9 core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  16. 9 core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  17. 9 core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  18. 9 core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User
  19. 8.9.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User
  20. 8.9.x core/modules/user/src/Plugin/views/argument_validator/User.php \Drupal\user\Plugin\views\argument_validator\User
  21. 8.9.x core/modules/user/src/Plugin/views/argument_default/User.php \Drupal\user\Plugin\views\argument_default\User
  22. 8.9.x core/modules/user/src/Plugin/migrate/source/d6/User.php \Drupal\user\Plugin\migrate\source\d6\User
  23. 8.9.x core/modules/user/src/Plugin/migrate/source/d7/User.php \Drupal\user\Plugin\migrate\source\d7\User
  24. 8.9.x core/modules/user/src/Plugin/migrate/User.php \Drupal\user\Plugin\migrate\User

Validate whether an argument is a valid user.

This supports either numeric arguments (UID) or strings (username) and converts either one into the user's UID. This validator also sets the argument's title to the username.

Hierarchy

Expanded class hierarchy of User

1060 string references to 'User'
2d3581c3-92c7-4600-8991-a0d4b3741198.yml in core/tests/fixtures/default_content/node/2d3581c3-92c7-4600-8991-a0d4b3741198.yml
core/tests/fixtures/default_content/node/2d3581c3-92c7-4600-8991-a0d4b3741198.yml
7f1dd75a-0be2-4d3b-be5d-9d1a868b9267.yml in core/tests/fixtures/default_content/node/7f1dd75a-0be2-4d3b-be5d-9d1a868b9267.yml
core/tests/fixtures/default_content/node/7f1dd75a-0be2-4d3b-be5d-9d1a868b9267.yml
94503467-be7f-406c-9795-fc25baa22203.yml in core/tests/fixtures/default_content/user/94503467-be7f-406c-9795-fc25baa22203.yml
core/tests/fixtures/default_content/user/94503467-be7f-406c-9795-fc25baa22203.yml
AccessPermissionTest::setUp in core/modules/user/tests/src/Kernel/Views/AccessPermissionTest.php
AccessPolicyProcessor::processAccessPolicies in core/lib/Drupal/Core/Session/AccessPolicyProcessor.php

... See full list

File

core/modules/user/src/Plugin/views/argument_validator/User.php, line 22

Namespace

Drupal\user\Plugin\views\argument_validator
View source
class User extends Entity {
  
  /**
   * The user storage.
   *
   * @var \Drupal\Core\Entity\EntityStorageInterface
   */
  protected $userStorage;
  
  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, ?EntityTypeBundleInfoInterface $entity_type_bundle_info = NULL) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_type_manager, $entity_type_bundle_info);
    $this->userStorage = $entity_type_manager->getStorage('user');
  }
  
  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['restrict_roles'] = [
      'default' => FALSE,
    ];
    $options['roles'] = [
      'default' => [],
    ];
    return $options;
  }
  
  /**
   * {@inheritdoc}
   */
  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    parent::buildOptionsForm($form, $form_state);
    $sanitized_id = ArgumentPluginBase::encodeValidatorId($this->definition['id']);
    $form['restrict_roles'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Restrict user based on role'),
      '#default_value' => $this->options['restrict_roles'],
    ];
    $roles = Role::loadMultiple();
    unset($roles[RoleInterface::ANONYMOUS_ID]);
    $roles = array_map(fn(RoleInterface $role) => Html::escape($role->label()), $roles);
    $form['roles'] = [
      '#type' => 'checkboxes',
      '#title' => $this->t('Restrict to the selected roles'),
      '#options' => $roles,
      '#default_value' => $this->options['roles'],
      '#description' => $this->t('If no roles are selected, users from any role will be allowed.'),
      '#states' => [
        'visible' => [
          ':input[name="options[validate][options][' . $sanitized_id . '][restrict_roles]"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
  }
  
  /**
   * {@inheritdoc}
   */
  public function submitOptionsForm(&$form, FormStateInterface $form_state, &$options = []) {
    // Filter trash out of the options so we don't store giant unnecessary
    // arrays.
    $options['roles'] = array_filter($options['roles']);
  }
  
  /**
   * {@inheritdoc}
   */
  protected function validateEntity(EntityInterface $entity) {
    /** @var \Drupal\user\UserInterface $entity */
    $role_check_success = TRUE;
    // See if we're filtering users based on roles.
    if (!empty($this->options['restrict_roles']) && !empty($this->options['roles'])) {
      $roles = $this->options['roles'];
      if (!(bool) array_intersect($entity->getRoles(), $roles)) {
        $role_check_success = FALSE;
      }
    }
    return $role_check_success && parent::validateEntity($entity);
  }
  
  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();
    foreach ($this->entityTypeManager
      ->getStorage('user_role')
      ->loadMultiple(array_keys($this->options['roles'])) as $role) {
      $dependencies[$role->getConfigDependencyKey()][] = $role->getConfigDependencyName();
    }
    return $dependencies;
  }

}

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