protected function execute(InputInterface $input, OutputInterface $output) { $userService = new UserService($this->getSlim()); $helper = $this->getHelper('question'); if (null === $input->getOption('email')) { $question = new Question('Please enter an e-mail: ', 'untitled'); $email = $helper->ask($input, $output, $question); } else { $email = $input->getOption('email'); } if (null === $input->getOption('password')) { $question = new Question('Please enter a password: '******''); $password = $helper->ask($input, $output, $question); } else { $password = $input->getOption('password'); } $userService->fetchAvailablePermissions(); $permissionsDictionary = []; foreach ($userService->getCursor() as $permission) { $permissionsDictionary[$permission->getName()] = $permission; } if (null === $input->getOption('permissions')) { $question = new ChoiceQuestion('Please select which permissions you would like to enable (defaults to super). Separate multiple values with commas (without spaces). If you select super, all other permissions are also inherited: ', array_keys($permissionsDictionary), '0'); $question->setMultiselect(true); $selectedPermissionNames = $helper->ask($input, $output, $question); } else { $selectedPermissionNames = explode(',', $input->getOption('permissions')); } $selectedPermissions = []; foreach ($selectedPermissionNames as $selectedPermissionName) { $selectedPermissions[] = $permissionsDictionary[$selectedPermissionName]; } $user = $userService->addUser($email, $password, $selectedPermissions); $text = json_encode($user, JSON_PRETTY_PRINT); $output->writeln('<info>User successfully created!</info>'); $output->writeln('<info>Info:</info>'); $output->writeln($text); }
protected function execute(InputInterface $input, OutputInterface $output) { $basicAuthService = new BasicAuthService($this->getSlim()); if (null === $input->getOption('name')) { $helper = $this->getHelper('question'); $question = new Question('Please enter a name: ', 'untitled'); $name = $helper->ask($input, $output, $question); } else { $name = $input->getOption('name'); } if (null === $input->getOption('description')) { $question = new Question('Please enter a description: ', ''); $description = $helper->ask($input, $output, $question); } else { $description = $input->getOption('description'); } if (null === $input->getOption('expiration')) { $question = new Question('Please enter the expiration timestamp for the token (blank == indefinite): '); $expiresAt = $helper->ask($input, $output, $question); } else { $expiresAt = $input->getOption('expiration'); } $userService = new UserService($this->getSlim()); $userService->fetchAll(); $users = []; foreach ($userService->getCursor() as $user) { $users[$user->getEmail()] = $user; } if (null === $input->getOption('email')) { $question = new Question('Please enter enter the e-mail of the associated user: '******''); $question->setAutocompleterValues(array_keys($users)); $email = $helper->ask($input, $output, $question); $user = $users[$email]; } else { $email = $input->getOption('email'); if (!isset($users[$email])) { throw new Exception('Invalid e-mail provided! User does not exist!'); } $user = $users[$email]; } $userService->fetchAvailablePermissions(); $scopesDictionary = []; foreach ($userService->getCursor() as $scope) { $scopesDictionary[$scope->getName()] = $scope; } if (null === $input->getOption('scopes')) { $question = new ChoiceQuestion('Please select which scopes you would like to enable (defaults to super). Separate multiple values with commas (without spaces). If you select super, all other permissions are also inherited: ', array_keys($scopesDictionary), '0'); $question->setMultiselect(true); $selectedScopeNames = $helper->ask($input, $output, $question); $selectedScopes = []; foreach ($selectedScopeNames as $selectedScopeName) { $selectedScopes[] = $scopesDictionary[$selectedScopeName]; } } else { $selectedScopeNames = explode(',', $input->getOption('scopes')); } $selectedScopes = []; foreach ($selectedScopeNames as $selectedScopeName) { $selectedScopes[] = $scopesDictionary[$selectedScopeName]; } $token = $basicAuthService->addToken($name, $description, $expiresAt, $user, $selectedScopes); if (null !== $input->getOption('key')) { $token->setKey($input->getOption('key')); $token->save(); } if (null !== $input->getOption('secret')) { $token->setSecret($input->getOption('secret')); $token->save(); } $text = json_encode($token, JSON_PRETTY_PRINT); $output->writeln('<info>Basic token successfully created!</info>'); $output->writeln('<info>Info:</info>'); $output->writeln($text); }