diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Command/RoleCommand.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Command/RoleCommand.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\UserBundle\Command; + +use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; +use FOS\UserBundle\Model\User; +use FOS\UserBundle\Util\UserManipulator; + +/** + * @author Lenar Lõhmus + */ +abstract class RoleCommand extends ContainerAwareCommand +{ + /** + * @see Command + */ + protected function configure() + { + $this + ->setDefinition(array( + 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'), + )); + } + + /** + * @see Command + */ + 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.'); + } + + $manipulator = $this->getContainer()->get('fos_user.util.user_manipulator'); + $this->executeRoleCommand($manipulator, $output, $username, $super, $role); + } + + /** + * @see Command + */ + abstract protected function executeRoleCommand(UserManipulator $manipulator, OutputInterface $output, $username, $super, $role); + + /** + * @see Command + */ + protected function interact(InputInterface $input, OutputInterface $output) + { + if (!$input->getArgument('username')) { + $username = $this->getHelper('dialog')->askAndValidate( + $output, + 'Please choose a username:', + function($username) + { + if (empty($username)) { + throw new \Exception('Username can not be empty'); + } + return $username; + } + ); + $input->setArgument('username', $username); + } + if ((true !== $input->getOption('super')) && !$input->getArgument('role')) { + $role = $this->getHelper('dialog')->askAndValidate( + $output, + 'Please choose a role:', + function($role) + { + if (empty($role)) { + throw new \Exception('Role can not be empty'); + } + return $role; + } + ); + $input->setArgument('role', $role); + } + } +}