getHelper('question'); // ============================= // Email // ============================= $emailQuestion = new Question('E-Mail: '); $emailQuestion->setValidator(function ($value) { if (!filter_var($value, FILTER_VALIDATE_EMAIL)) { throw new \RuntimeException('Invalid email address.'); } return strtolower(trim($value)); }); $email = $helper->ask($input, $output, $emailQuestion); // Prüfen ob User existiert $existingUser = $this->em ->getRepository(User::class) ->findOneBy(['email' => $email]); if ($existingUser) { $output->writeln('User already exists.'); return Command::FAILURE; } // ============================= // Passwort // ============================= $passwordQuestion = new Question('Password: '); $passwordQuestion->setHidden(true); $passwordQuestion->setHiddenFallback(false); $plainPassword = $helper->ask($input, $output, $passwordQuestion); if (strlen($plainPassword) < 8) { $output->writeln('Password must be at least 8 characters.'); return Command::FAILURE; } // ============================= // Rolle auswählen // ============================= $roleQuestion = new ChoiceQuestion( 'Select role:', [ 'ROLE_SUPER_ADMIN', 'ROLE_KNOWLEDGE_ADMIN', 'ROLE_EDITOR', 'ROLE_USER', ], 0 ); $role = $helper->ask($input, $output, $roleQuestion); // ============================= // User erzeugen // ============================= $user = new User(); $user->setEmail($email); $user->setRoles([$role]); $hashedPassword = $this->passwordHasher->hashPassword($user, $plainPassword); $user->setPassword($hashedPassword); $this->em->persist($user); $this->em->flush(); $output->writeln('User created successfully.'); $output->writeln('Email: ' . $email); $output->writeln('Role: ' . $role); return Command::SUCCESS; } }