]>
Commit | Line | Data |
---|---|---|
d143fa24 TC |
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; | |
d58199f3 | 10 | use Symfony\Component\Console\Style\SymfonyStyle; |
d143fa24 TC |
11 | use Wallabag\UserBundle\Entity\User; |
12 | ||
13 | class ShowUserCommand extends ContainerAwareCommand | |
14 | { | |
d58199f3 NH |
15 | /** @var SymfonyStyle */ |
16 | protected $io; | |
d143fa24 TC |
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 | { | |
d58199f3 | 33 | $this->io = new SymfonyStyle($input, $output); |
d143fa24 TC |
34 | |
35 | $username = $input->getArgument('username'); | |
36 | ||
37 | try { | |
38 | $user = $this->getUser($username); | |
39 | $this->showUser($user); | |
40 | } catch (NoResultException $e) { | |
d58199f3 | 41 | $this->io->error(sprintf('User "%s" not found.', $username)); |
d143fa24 TC |
42 | |
43 | return 1; | |
44 | } | |
45 | ||
46 | return 0; | |
47 | } | |
48 | ||
49 | /** | |
50 | * @param User $user | |
51 | */ | |
52 | private function showUser(User $user) | |
53 | { | |
d58199f3 | 54 | $this->io->listing([ |
e1b33efb NH |
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')), | |
3ef055ce | 59 | sprintf('Last login: %s', null !== $user->getLastLogin() ? $user->getLastLogin()->format('Y-m-d H:i:s') : 'never'), |
d58199f3 NH |
60 | sprintf('2FA activated: %s', $user->isTwoFactorAuthentication() ? 'yes' : 'no'), |
61 | ]); | |
d143fa24 TC |
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 | { | |
03ce43d4 | 73 | return $this->getContainer()->get('wallabag_user.user_repository')->findOneByUserName($username); |
d143fa24 | 74 | } |
d143fa24 | 75 | } |