1<?php 2 3namespace Bolt\Nut; 4 5use Symfony\Component\Console\Input\InputArgument; 6use Symfony\Component\Console\Input\InputInterface; 7use Symfony\Component\Console\Output\OutputInterface; 8 9/** 10 * Nut command to add a user to the system 11 */ 12class UserAdd extends BaseCommand 13{ 14 /** 15 * @see \Symfony\Component\Console\Command\Command::configure() 16 */ 17 protected function configure() 18 { 19 $this 20 ->setName('user:add') 21 ->setDescription('Add a new user.') 22 ->addArgument('username', InputArgument::REQUIRED, 'The username (loginname) you wish to add a role to.') 23 ->addArgument('displayname', InputArgument::REQUIRED, 'The display name for the new user.') 24 ->addArgument('email', InputArgument::REQUIRED, 'The email address for the new user.') 25 ->addArgument('password', InputArgument::REQUIRED, 'The password for the new user.') 26 ->addArgument('role', InputArgument::REQUIRED, 'The role you wish to give them.'); 27 } 28 29 /** 30 * @see \Symfony\Component\Console\Command\Command::execute() 31 */ 32 protected function execute(InputInterface $input, OutputInterface $output) 33 { 34 $username = $input->getArgument('username'); 35 $password = $input->getArgument('password'); 36 $email = $input->getArgument('email'); 37 $displayname = $input->getArgument('displayname'); 38 $role = $input->getArgument('role'); 39 40 $this->app['users']->getUsers(); 41 $user = $this->app['users']->getEmptyUser(); 42 $user['roles'] = array($role); 43 $user['username'] = $username; 44 $user['password'] = $password; 45 $user['displayname'] = $displayname; 46 $user['email'] = $email; 47 48 $valid = true; 49 if (! $this->app['users']->checkAvailability('username', $user['username'])) { 50 $valid = false; 51 $output->writeln("<error>Error creating user: username {$user['username']} already exists</error>"); 52 } 53 if (! $this->app['users']->checkAvailability('email', $user['email'])) { 54 $valid = false; 55 $output->writeln("<error>Error creating user: email {$user['email']} exists</error>"); 56 } 57 if (! $this->app['users']->checkAvailability('displayname', $user['displayname'])) { 58 $valid = false; 59 $output->writeln("<error>Error creating user: display name {$user['displayname']} already exists</error>"); 60 } 61 62 if ($valid) { 63 $res = $this->app['users']->saveUser($user); 64 if ($res) { 65 $this->auditLog(__CLASS__, "User created: {$user['username']}"); 66 $output->writeln("<info>Successfully created user: {$user['username']}</info>"); 67 } else { 68 $output->writeln("<error>Error creating user: {$user['username']}</error>"); 69 } 70 } 71 } 72} 73