You are here

class UserCredentials in DRD Agent 8.3

Same name and namespace in other branches
  1. 4.0.x src/Agent/Action/UserCredentials.php \Drupal\drd_agent\Agent\Action\UserCredentials

Provides a 'UserCredentials' code.

Hierarchy

Expanded class hierarchy of UserCredentials

File

src/Agent/Action/UserCredentials.php, line 11

Namespace

Drupal\drd_agent\Agent\Action
View source
class UserCredentials extends Base {

  /**
   * {@inheritdoc}
   */
  public function execute() {
    $args = $this
      ->getArguments();

    /** @var \Drupal\user\Entity\User $account */
    $account = User::load($args['uid']);
    if (!$account) {
      $this->messenger
        ->addMessage('User does not exist.', 'error');
    }
    else {
      $this
        ->setUsername($account, $args);
      $this
        ->setPassword($account, $args);
      $this
        ->setStatus($account, $args);
      try {
        $account
          ->save();
      } catch (Exception $ex) {
        $this->messenger
          ->addMessage('Changing user credentials failed.', 'error');
      }
    }
    return [];
  }

  /**
   * Callback to set the new username if it is not taken yet.
   *
   * @param \Drupal\user\Entity\User $account
   *   User account which should be changed.
   * @param array $args
   *   Array of arguments.
   */
  private function setUsername(User $account, array $args) {
    if (empty($args['username'])) {
      return;
    }
    $check = user_validate_name($args['username']);
    if (!empty($check)) {
      $this->messenger
        ->addMessage($check, 'error');
      return;
    }
    $user = user_load_by_name($args['username']);
    if (!empty($user) && $user->uid !== $args['uid']) {
      $this->messenger
        ->addMessage('Username already taken.', 'error');
      return;
    }
    $account
      ->setUsername($args['username']);
  }

  /**
   * Callback to set the new password.
   *
   * @param \Drupal\user\Entity\User $account
   *   User account which should be changed.
   * @param array $args
   *   Array of arguments.
   */
  private function setPassword(User $account, array $args) {
    if (empty($args['password'])) {
      return;
    }
    $account
      ->setPassword($args['password']);
  }

  /**
   * Callback to set the status of the user account.
   *
   * @param \Drupal\user\Entity\User $account
   *   User account which should be changed.
   * @param array $args
   *   Array of arguments.
   */
  private function setStatus(User $account, array $args) {
    if (!isset($args['status'])) {
      return;
    }
    if ($args['status']) {
      $account
        ->activate();
    }
    else {
      $account
        ->block();
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Base::$accountSwitcher protected property
Base::$arguments private property
Base::$configFactory protected property
Base::$container protected property
Base::$crypt protected property Crypt object for this DRD request.
Base::$database protected property
Base::$debugMode private property
Base::$entityTypeManager protected property
Base::$fileSystem protected property
Base::$logger protected property
Base::$messenger protected property
Base::$moduleHandler protected property
Base::$state protected property
Base::$time protected property
Base::authenticate private function Authenticate the request or throw an exception.
Base::authorize public function Authorize the DRD instance, all validations have passed successfully. Overrides BaseInterface::authorize
Base::authorizeBySecret public function Callback to authorize a DRD instance with a given secret.
Base::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create
Base::getArguments public function Get the arguments for this request. Overrides BaseInterface::getArguments
Base::getCryptInstance public function Get authorised Crypt object or FALSE if none is available. Overrides BaseInterface::getCryptInstance
Base::getDbInfo public function Get an array of database connection information. Overrides BaseInterface::getDbInfo
Base::getDebugMode public function Get the debug mode. Overrides BaseInterface::getDebugMode
Base::getMessages public function Overrides BaseInterface::getMessages
Base::init public function Overrides BaseInterface::init
Base::ott public function Validate a one-time-token. Overrides BaseInterface::ott
Base::promoteUser public function Change current session to user 1. Overrides BaseInterface::promoteUser
Base::readInput private function Read and decode the input from the POST request.
Base::realPath public function Overrides BaseInterface::realPath
Base::run public function Main callback to execute an action.
Base::SEC_AUTH_ACQUIA constant
Base::SEC_AUTH_PANTHEON constant
Base::SEC_AUTH_PLATFORMSH constant
Base::setDebugMode public function Set the debug mode. Overrides BaseInterface::setDebugMode
Base::toArray private function Recursivly convert request arguments to an array.
Base::watchdog public function Logging if in debug mode. Overrides BaseInterface::watchdog
Base::__construct public function Base constructor.
UserCredentials::execute public function Execute an action. Overrides Base::execute
UserCredentials::setPassword private function Callback to set the new password.
UserCredentials::setStatus private function Callback to set the status of the user account.
UserCredentials::setUsername private function Callback to set the new username if it is not taken yet.