UserCredentials.php in DRD Agent 4.0.x
File
src/Agent/Action/UserCredentials.php
View source
<?php
namespace Drupal\drd_agent\Agent\Action;
use Drupal\user\Entity\User;
use Exception;
class UserCredentials extends Base {
public function execute() {
$args = $this
->getArguments();
$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 [];
}
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']);
}
private function setPassword(User $account, array $args) {
if (empty($args['password'])) {
return;
}
$account
->setPassword($args['password']);
}
private function setStatus(User $account, array $args) {
if (!isset($args['status'])) {
return;
}
if ($args['status']) {
$account
->activate();
}
else {
$account
->block();
}
}
}