You are here

protected function UserCreateUpdate::beforeUserSave in Apigee Edge 8

Execute actions before the user gets saved.

Parameters

\Drupal\apigee_edge\Structure\DeveloperToUserConversionResult $result: Result of the entity conversion.

Throws

\Exception Can throw an exception to abort user save.

2 calls to UserCreateUpdate::beforeUserSave()
UserCreateUpdate::executeRequest in src/Job/UserCreateUpdate.php
Executes the request itself.
UserUpdate::beforeUserSave in src/Job/UserUpdate.php
Execute actions before the user gets saved.
1 method overrides UserCreateUpdate::beforeUserSave()
UserUpdate::beforeUserSave in src/Job/UserUpdate.php
Execute actions before the user gets saved.

File

src/Job/UserCreateUpdate.php, line 108

Class

UserCreateUpdate
Base class for user create/update sync jobs.

Namespace

Drupal\apigee_edge\Job

Code

protected function beforeUserSave(DeveloperToUserConversionResult $result) : void {

  // Abort the operation if any of these special problems occurred
  // meanwhile the conversation.
  foreach ($result
    ->getProblems() as $problem) {

    // Skip user save if username is already taken or the username
    // is too long instead of getting a database exception in a lower layer.
    // (Username field's value is not limited on Apigee Edge and it is not
    // unique either.)
    if ($problem instanceof DeveloperToUserConversationInvalidValueException && $problem
      ->getTarget() === 'name') {
      throw $problem;
    }
  }

  // It's necessary because changed time is automatically updated on the
  // UI only.
  $result
    ->getUser()
    ->setChangedTime(\Drupal::time()
    ->getCurrentTime());
}