UnlockAdminAccountCommand.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Console;
  7. use Symfony\Component\Console\Command\Command;
  8. use Symfony\Component\Console\Input\InputArgument;
  9. use Symfony\Component\Console\Input\InputInterface;
  10. use Symfony\Component\Console\Output\OutputInterface;
  11. use Magento\User\Model\ResourceModel\User as AdminUser;
  12. /**
  13. * Command for unlocking an account.
  14. */
  15. class UnlockAdminAccountCommand extends Command
  16. {
  17. const ARGUMENT_ADMIN_USERNAME = 'username';
  18. const ARGUMENT_ADMIN_USERNAME_DESCRIPTION = 'The admin username to unlock';
  19. const COMMAND_ADMIN_ACCOUNT_UNLOCK = 'admin:user:unlock';
  20. const COMMAND_DESCRIPTION = 'Unlock Admin Account';
  21. const USER_ID = 'user_id';
  22. /**
  23. * @var AdminUser
  24. */
  25. private $adminUser;
  26. /**
  27. * {@inheritdoc}
  28. *
  29. * @param AdminUser $userResource
  30. */
  31. public function __construct(
  32. AdminUser $adminUser,
  33. $name = null
  34. ) {
  35. $this->adminUser = $adminUser;
  36. parent::__construct($name);
  37. }
  38. /**
  39. * {@inheritdoc}
  40. */
  41. protected function execute(InputInterface $input, OutputInterface $output)
  42. {
  43. $adminUserName = $input->getArgument(self::ARGUMENT_ADMIN_USERNAME);
  44. $userData = $this->adminUser->loadByUsername($adminUserName);
  45. $outputMessage = sprintf('Couldn\'t find the user account "%s"', $adminUserName);
  46. if ($userData) {
  47. if (isset($userData[self::USER_ID]) && $this->adminUser->unlock($userData[self::USER_ID])) {
  48. $outputMessage = sprintf('The user account "%s" has been unlocked', $adminUserName);
  49. } else {
  50. $outputMessage = sprintf(
  51. 'The user account "%s" was not locked or could not be unlocked',
  52. $adminUserName
  53. );
  54. }
  55. }
  56. $output->writeln('<info>' . $outputMessage . '</info>');
  57. }
  58. /**
  59. * {@inheritdoc}
  60. */
  61. protected function configure()
  62. {
  63. $this->setName(self::COMMAND_ADMIN_ACCOUNT_UNLOCK);
  64. $this->setDescription(self::COMMAND_DESCRIPTION);
  65. $this->addArgument(
  66. self::ARGUMENT_ADMIN_USERNAME,
  67. InputArgument::REQUIRED,
  68. self::ARGUMENT_ADMIN_USERNAME_DESCRIPTION
  69. );
  70. $this->setHelp(
  71. <<<HELP
  72. This command unlocks an admin account by its username.
  73. To unlock:
  74. <comment>%command.full_name% username</comment>
  75. HELP
  76. );
  77. parent::configure();
  78. }
  79. }