function User::postSave

Same name and namespace in other branches
  1. 9 core/modules/user/src/Entity/User.php \Drupal\user\Entity\User::postSave()
  2. 8.9.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User::postSave()
  3. 11.x core/modules/user/src/Entity/User.php \Drupal\user\Entity\User::postSave()

Overrides ContentEntityBase::postSave

File

core/modules/user/src/Entity/User.php, line 117

Class

User
Defines the user entity class.

Namespace

Drupal\user\Entity

Code

public function postSave(EntityStorageInterface $storage, $update = TRUE) {
  parent::postSave($storage, $update);
  if ($update) {
    $session_manager = \Drupal::service('session_manager');
    // If the password has been changed, delete all open sessions for the
    // user and recreate the current one.
    if ($this->pass->value != $this->original->pass->value) {
      $session_manager->delete($this->id());
      if ($this->id() == \Drupal::currentUser()->id()) {
        \Drupal::service('session')->migrate();
      }
      $flood_config = \Drupal::config('user.flood');
      $flood_service = \Drupal::flood();
      $identifier = $this->id();
      if ($flood_config->get('uid_only')) {
        // Clear flood events based on the uid only if configured.
        $flood_service->clear('user.failed_login_user', $identifier);
      }
      elseif ($flood_service instanceof PrefixFloodInterface) {
        $flood_service->clearByPrefix('user.failed_login_user', $identifier);
      }
    }
    // If the user was blocked, delete the user's sessions to force a logout.
    if ($this->original->status->value != $this->status->value && $this->status->value == 0) {
      $session_manager->delete($this->id());
    }
    // Send emails after we have the new user object.
    if ($this->status->value != $this->original->status->value) {
      // The user's status is changing; conditionally send notification email.
      $op = $this->status->value == 1 ? 'status_activated' : 'status_blocked';
      _user_mail_notify($op, $this);
    }
  }
}

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