userService = $userService; } protected function configure() { $this ->setName('kimai:user:password') ->setAliases(['fos:user:change-password']) ->setDescription('Change the password of a user.') ->setDefinition([ new InputArgument('username', InputArgument::REQUIRED, 'The username'), new InputArgument('password', InputArgument::OPTIONAL, 'The password'), ]) ->setHelp( <<<'EOT' The kimai:user:password command changes the password of a user: php %command.full_name% matthieu This interactive shell will first ask you for a password. You can alternatively specify the password as a second argument: php %command.full_name% susan_super newpassword EOT ); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $username = $input->getArgument('username'); if (null !== $input->getArgument('password')) { $password = $input->getArgument('password'); } else { $password = $this->askForPassword($input, $output); } $user = $this->userService->findUserByUsernameOrThrowException($username); $io = new CommandStyle($input, $output); try { $user->setPlainPassword($password); $this->userService->updateUser($user, ['PasswordUpdate']); $io->success(sprintf('Changed password for user "%s".', $username)); } catch (ValidationFailedException $ex) { $io->validationError($ex); return 2; } return 0; } }