em = $em; parent::__construct(); } protected function configure() { $this->setName('api:user-create-for-rider') ->setDescription('Create API users for existing riders.') ->setHelp('Creates API users for existing riders.') ->addArgument('role_id', InputArgument::REQUIRED, 'Role ID for api_user.'); } protected function execute(InputInterface $input, OutputInterface $output) { error_log('Creating api users...'); // get all existing riders $riders = $this->em->getRepository(Rider::class)->findAll(); // get role for rider api user $role_id = $input->getArgument('role_id'); $role = $this->em->getRepository(APIRole::class)->find($role_id); if ($role == null) { error_log('Cannot find role with id ' . $role_id); return 0; } foreach ($riders as $rider) { // skip riders who already have users if ($rider->getAPIUser() != null) continue; // create api user for each rider // no need to generate the keys. // Secret and API keys are generated in constructor $api_user = new APIUser(); // set enabled to true $api_user->setEnabled(true); // set name to rider's last name + first name $rider_name = $rider->getFirstName() . ' ' . $rider->getLastName(); $api_user->setName($rider_name); // set rider to api_user $api_user->setRider($rider); // set meta $meta = ['rider_id' => $rider->getID()]; $api_user->setMetaData($meta); // set role $api_user->addRole($role); // set rider's api user $rider->setAPIUser($api_user); $this->em->persist($api_user); } $this->em->flush(); return 0; } }