--- /dev/null
+<?php
+
+namespace Drupal\Console\Command\User;
+
+use Drupal\Core\Entity\EntityTypeManagerInterface;
+use Drupal\Console\Core\Command\Command;
+
+/**
+ * Class UserBase
+ *
+ * @package Drupal\Console\Command\User
+ */
+class UserBase extends Command
+{
+ /**
+ * @var EntityTypeManagerInterface
+ */
+ protected $entityTypeManager;
+
+
+ /**
+ * Base constructor.
+ *
+ * @param EntityTypeManagerInterface $entityTypeManager
+ */
+ public function __construct(
+ EntityTypeManagerInterface $entityTypeManager
+ ) {
+ $this->entityTypeManager = $entityTypeManager;
+ parent::__construct();
+ }
+
+ /**
+ * @param $user mixed
+ *
+ * @return mixed
+ */
+ public function getUserEntity($user)
+ {
+ if (is_numeric($user)) {
+ $userEntity = $this->entityTypeManager
+ ->getStorage('user')
+ ->load($user);
+ } else {
+ $userEntity = reset(
+ $this->entityTypeManager
+ ->getStorage('user')
+ ->loadByProperties(['name' => $user])
+ );
+ }
+
+ return $userEntity;
+ }
+
+ /***
+ * @return array users from site
+ */
+ public function getUsers()
+ {
+ $userStorage = $this->entityTypeManager->getStorage('user');
+ $users = $userStorage->loadMultiple();
+
+ $userList = [];
+ foreach ($users as $userId => $user) {
+ $userList[$userId] = $user->getUsername();
+ }
+
+ return $userList;
+ }
+
+ private function userQuestion($user)
+ {
+ if (!$user) {
+ $user = $this->getIo()->choiceNoList(
+ $this->trans('commands.user.password.reset.questions.user'),
+ $this->getUsers()
+ );
+ }
+
+ return $user;
+ }
+
+ public function getUserOption()
+ {
+ $input = $this->getIo()->getInput();
+
+ $user = $this->userQuestion($input->getOption('user'));
+ $input->setOption('user', $user);
+
+ return $user;
+ }
+
+ public function getUserArgument()
+ {
+ $input = $this->getIo()->getInput();
+
+ $user = $this->userQuestion($input->getArgument('user'));
+ $input->setArgument('user', $user);
+
+ return $user;
+ }
+}