diff options
Diffstat (limited to 'src/Wallabag/CoreBundle/Command/ShowUserCommand.php')
-rw-r--r-- | src/Wallabag/CoreBundle/Command/ShowUserCommand.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/Wallabag/CoreBundle/Command/ShowUserCommand.php b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php new file mode 100644 index 00000000..a0184267 --- /dev/null +++ b/src/Wallabag/CoreBundle/Command/ShowUserCommand.php | |||
@@ -0,0 +1,75 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Command; | ||
4 | |||
5 | use Doctrine\ORM\NoResultException; | ||
6 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; | ||
7 | use Symfony\Component\Console\Input\InputArgument; | ||
8 | use Symfony\Component\Console\Input\InputInterface; | ||
9 | use Symfony\Component\Console\Output\OutputInterface; | ||
10 | use Symfony\Component\Console\Style\SymfonyStyle; | ||
11 | use Wallabag\UserBundle\Entity\User; | ||
12 | |||
13 | class ShowUserCommand extends ContainerAwareCommand | ||
14 | { | ||
15 | /** @var SymfonyStyle */ | ||
16 | protected $io; | ||
17 | |||
18 | protected function configure() | ||
19 | { | ||
20 | $this | ||
21 | ->setName('wallabag:user:show') | ||
22 | ->setDescription('Show user details') | ||
23 | ->setHelp('This command shows the details for an user') | ||
24 | ->addArgument( | ||
25 | 'username', | ||
26 | InputArgument::REQUIRED, | ||
27 | 'User to show details for' | ||
28 | ); | ||
29 | } | ||
30 | |||
31 | protected function execute(InputInterface $input, OutputInterface $output) | ||
32 | { | ||
33 | $this->io = new SymfonyStyle($input, $output); | ||
34 | |||
35 | $username = $input->getArgument('username'); | ||
36 | |||
37 | try { | ||
38 | $user = $this->getUser($username); | ||
39 | $this->showUser($user); | ||
40 | } catch (NoResultException $e) { | ||
41 | $this->io->error(sprintf('User "%s" not found.', $username)); | ||
42 | |||
43 | return 1; | ||
44 | } | ||
45 | |||
46 | return 0; | ||
47 | } | ||
48 | |||
49 | /** | ||
50 | * @param User $user | ||
51 | */ | ||
52 | private function showUser(User $user) | ||
53 | { | ||
54 | $this->io->listing([ | ||
55 | sprintf('Username: %s', $user->getUsername()), | ||
56 | sprintf('Email: %s', $user->getEmail()), | ||
57 | sprintf('Display name: %s', $user->getName()), | ||
58 | sprintf('Creation date: %s', $user->getCreatedAt()->format('Y-m-d H:i:s')), | ||
59 | sprintf('Last login: %s', null !== $user->getLastLogin() ? $user->getLastLogin()->format('Y-m-d H:i:s') : 'never'), | ||
60 | sprintf('2FA activated: %s', $user->isTwoFactorAuthentication() ? 'yes' : 'no'), | ||
61 | ]); | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Fetches a user from its username. | ||
66 | * | ||
67 | * @param string $username | ||
68 | * | ||
69 | * @return \Wallabag\UserBundle\Entity\User | ||
70 | */ | ||
71 | private function getUser($username) | ||
72 | { | ||
73 | return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username); | ||
74 | } | ||
75 | } | ||