Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. UserMailRequiredValidator.php

class UserMailRequiredValidator

Checks if the user's email address is provided if required.

The user mail field is NOT required if account originally had no mail set and the user performing the edit has 'administer users' permission. This allows users without email address to be edited and deleted.

Hierarchy

  • class \Symfony\Component\Validator\ConstraintValidator implements \Symfony\Component\Validator\ConstraintValidatorInterface
    • class \Drupal\user\Plugin\Validation\Constraint\UserMailRequiredValidator extends \Symfony\Component\Validator\ConstraintValidator

Expanded class hierarchy of UserMailRequiredValidator

File

core/modules/user/src/Plugin/Validation/Constraint/UserMailRequiredValidator.php, line 15

Namespace

Drupal\user\Plugin\Validation\Constraint
View source
class UserMailRequiredValidator extends ConstraintValidator {
    
    /**
     * {@inheritdoc}
     */
    public function validate($items, Constraint $constraint) : void {
        
        /** @var \Drupal\Core\Field\FieldItemListInterface $items */
        
        /** @var \Drupal\user\UserInterface $account */
        $account = $items->getEntity();
        if (!isset($account)) {
            return;
        }
        $existing_value = NULL;
        // Only validate for existing user.
        if (!$account->isNew()) {
            $account_unchanged = \Drupal::entityTypeManager()->getStorage('user')
                ->loadUnchanged($account->id());
            $existing_value = $account_unchanged->getEmail();
        }
        $required = !(!$existing_value && \Drupal::currentUser()->hasPermission('administer users'));
        if ($required && (!isset($items) || $items->isEmpty())) {
            $this->context
                ->addViolation($constraint->message, [
                '@name' => $account->getFieldDefinition('mail')
                    ->getLabel(),
            ]);
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ConstraintValidator::$context protected property
ConstraintValidator::formatTypeOf protected function Returns a string representation of the type of the value.
ConstraintValidator::formatValue protected function Returns a string representation of the value.
ConstraintValidator::formatValues protected function Returns a string representation of a list of values.
ConstraintValidator::initialize public function Initializes the constraint validator. Overrides ConstraintValidatorInterface::initialize
ConstraintValidator::OBJECT_TO_STRING public constant Whether to cast objects with a "__toString()" method to strings.
ConstraintValidator::PRETTY_DATE public constant Whether to format {@link \DateTime} objects, either with the {@link \IntlDateFormatter}
(if it is available) or as RFC-3339 dates ("Y-m-d H:i:s").
UserMailRequiredValidator::validate public function Checks if the passed value is valid. Overrides ConstraintValidatorInterface::validate
RSS feed
Powered by Drupal