diff --git a/Neos.Neos/Classes/Command/UserCommandController.php b/Neos.Neos/Classes/Command/UserCommandController.php
index 36866f646f8..95cbe9cf08e 100644
--- a/Neos.Neos/Classes/Command/UserCommandController.php
+++ b/Neos.Neos/Classes/Command/UserCommandController.php
@@ -19,6 +19,7 @@
use Neos\Flow\Security\Account;
use Neos\Flow\Security\Exception\NoSuchRoleException;
use Neos\Flow\Security\Policy\Role;
+use Neos\Party\Domain\Model\ElectronicAddress;
use Neos\Utility\Arrays;
use Neos\Neos\Domain\Model\User;
use Neos\Neos\Domain\Service\UserService;
@@ -55,7 +56,7 @@ public function listCommand()
$users = $this->userService->getUsers();
$tableRows = [];
- $headerRow = ['Name', 'Email', 'Account(s)', 'Role(s)', 'Active'];
+ $headerRow = ['Name', 'Primary Electronic Address', 'Account(s)', 'Role(s)', 'Active', 'Created at', 'Expires at'];
foreach ($users as $user) {
$tableRows[] = $this->getTableRowForUser($user);
@@ -83,15 +84,38 @@ public function showCommand($username, $authenticationProvider = null)
{
$user = $this->userService->getUser($username, $authenticationProvider);
if (!$user instanceof User) {
- $this->outputLine('The username "%s" is not in use', [$username]);
+ $this->outputLine('The username "%s" does not exist', [$username]);
$this->quit(1);
}
- /** @var User $user */
-
- $headerRow = ['Name', 'Email', 'Account(s)', 'Role(s)', 'Active'];
- $tableRows = [$this->getTableRowForUser($user)];
- $this->output->outputTable($tableRows, $headerRow);
+ $this->outputLine('First name: %s', [$user->getName()->getFirstName()]);
+ $this->outputLine('Last name: %s', [$user->getName()->getLastName()]);
+ $this->outputLine('Backend Language: %s', [$user->getPreferences()->getInterfaceLanguage() ?? 'Use system default']);
+
+ $this->outputLine();
+ $this->outputLine('Electronic address(es):');
+ $this->output->outputTable(
+ array_map(static fn (ElectronicAddress $electronicAddress) => [
+ $electronicAddress->getType(),
+ $electronicAddress->getIdentifier(),
+ $electronicAddress->getUsage(),
+ $electronicAddress === $user->getPrimaryElectronicAddress() ? 'yes' : 'no',
+ ], $user->getElectronicAddresses()->toArray()),
+ ['Type', 'Identifier', 'Usage', 'Primary?'],
+ );
+ $this->outputLine();
+ $this->outputLine('Account:');
+ $this->output->outputTable(
+ array_map(static fn (Account $account) => [
+ $account->getAccountIdentifier(),
+ implode(', ', $account->getRoles()),
+ $account->getAuthenticationProviderName(),
+ $account->isActive() ? 'yes' : 'no',
+ $account->getCreationDate()->format('Y-m-d'),
+ $account->getExpirationDate() !== null ? $account->getExpirationDate()->format('Y-m-d') : 'never',
+ ], $user->getAccounts()->toArray()),
+ ['Identifier', 'Role', 'Provider', 'Active', 'Created at', 'Expires at'],
+ );
}
/**
@@ -444,10 +468,12 @@ protected function getTableRowForUser(User $user)
}
return [
$user->getName()->getFullName(),
- $user->getPrimaryElectronicAddress(),
+ $user->getPrimaryElectronicAddress() ?? 'No Primary Electronic Address set',
implode(', ', $accountIdentifiers),
implode(', ', $roleNames),
- ($user->isActive() ? 'yes' : 'no')
+ ($user->isActive() ? 'yes' : 'no'),
+ $account->getCreationDate()->format('Y-m-d'),
+ $account->getExpirationDate() !== null ? $account->getExpirationDate()->format('Y-m-d') : 'never',
];
}
}