Edit file File name : AbstractRoleCommand.php Content :<?php /* * This file is part of the Kimai time-tracking app. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace App\Command; use App\Entity\User; use App\User\UserService; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; abstract class AbstractRoleCommand extends Command { private $userService; public function __construct(UserService $userService) { parent::__construct(); $this->userService = $userService; } /** * {@inheritdoc} */ protected function configure() { $this ->setDefinition([ new InputArgument('username', InputArgument::REQUIRED, 'The username'), new InputArgument('role', InputArgument::OPTIONAL, 'The role'), new InputOption('super', null, InputOption::VALUE_NONE, 'Instead specifying role, use this to quickly add the super administrator role'), ]); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $username = $input->getArgument('username'); $role = $input->getArgument('role'); $super = (true === $input->getOption('super')); if (null !== $role && $super) { throw new \InvalidArgumentException('You can pass either the role or the --super option (but not both simultaneously).'); } if (null === $role && !$super) { throw new \RuntimeException('Not enough arguments, pass a role or use --super.'); } $user = $this->userService->findUserByUsernameOrThrowException($username); $this->executeRoleCommand($this->userService, new SymfonyStyle($input, $output), $user, $super, $role); return 0; } abstract protected function executeRoleCommand(UserService $manipulator, SymfonyStyle $output, User $user, bool $super, $role); } Save