Browse Source

Commande de création d'un user

François 6 years ago
parent
commit
ef85e5f4c9

+ 66 - 0
src/AppBundle/Command/AppUserCreateCommand.php

@@ -0,0 +1,66 @@
+<?php
+
+namespace AppBundle\Command;
+
+use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Question\ChoiceQuestion;
+use Symfony\Component\Console\Question\Question;
+use AppBundle\Service\UserManager;
+
+class AppUserCreateCommand extends ContainerAwareCommand
+{
+    private $userManager;
+
+    public function __construct(UserManager $userManager)
+    {
+        $this->userManager = $userManager;
+        parent::__construct();
+    }
+
+    protected function configure()
+    {
+        $this
+            ->setName('app:user:create')
+            ->setDescription('Créer un utilisateur')
+            ->addArgument('argument', InputArgument::OPTIONAL, 'Argument description')
+            ->addOption('option', null, InputOption::VALUE_NONE, 'Option description')
+        ;
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output)
+    {
+        $helper = $this->getHelper('question');
+        $questionUsername = new Question('Nom (username) de l\'utilisateur : ', 'admin_user');
+        $questionPrenom = new Question('Prénom de l\'utilisateur : ', 'Toto');
+        $questionNom = new Question('Nom de l\'utilisateur : ', 'Titi');
+        $questionPassword = new Question('Mot de passe :', 'MotDePasse');
+        $questionPassword->setHidden(true);
+        $questionPassword->setHiddenFallback(false);
+        $questionMail = new Question('Email :', 'bidule@truc.chose');
+        $questionRole = new ChoiceQuestion('Roles :', array('ROLE_SUPER_ADMIN', 'ROLE_ADMIN', 'ROLE_USER', 'ROLE_MODERATEUR'), '0');
+        $questionRole->setMultiselect(true);
+
+        $username = $helper->ask($input, $output, $questionUsername);
+        $nom = $helper->ask($input, $output, $questionNom);
+        $prenom = $helper->ask($input, $output, $questionPrenom);
+        $mail = $helper->ask($input, $output, $questionMail);
+        $password = $helper->ask($input, $output, $questionPassword);
+        $roles = $helper->ask($input, $output, $questionRole);
+
+        $this->userManager->createUser(
+            "$username",
+            "$password",
+            "$nom",
+            "$prenom",
+            "$mail",
+            $roles,
+            true);
+
+        $output->writeln('Nom du pélo : '.$username);
+    }
+
+}

+ 0 - 1
src/AppBundle/Command/AppUsersActivateCommand.php

@@ -4,7 +4,6 @@ namespace AppBundle\Command;
 
 use Doctrine\ORM\EntityManagerInterface;
 use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
-use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Question\ConfirmationQuestion;

+ 0 - 16
src/AppBundle/Controller/SecurityController.php

@@ -149,22 +149,6 @@ class SecurityController extends Controller
         ));
     }
 
-    /**
-     * @Route("/admin/sendmailtest/{id}", name="admin_sendmailtest")
-     */
-    public function sendMailTestAction(\Swift_Mailer $mailer, User $user)
-    {
-        $swiftMessage = new \Swift_Message('Mail de test pour la vidéothèque');
-        $message = $swiftMessage
-            ->setFrom('admin@fdlibre.eu')
-            ->setTo($user->getMail())
-            ->setBody("Salut ".$user->getUsername().", Ceci est un mail de test de l'application Videotheque.");
-
-        $mailer->send($message);
-        $this->addFlash('success', 'Le mail a été envoyé à '.$user->getUsername());
-        return $this->redirectToRoute('admin_index');
-    }
-
     /**
      * @Route("/motdepasseoublie", name="security_envoyertoken")
      */

+ 42 - 0
src/AppBundle/Service/UserManager.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace AppBundle\Service;
+
+use AppBundle\Entity\User;
+use Doctrine\ORM\EntityManagerInterface;
+use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
+
+/**
+ * Agir sur les utilisateurs
+ */
+class UserManager
+{
+    protected $em;
+    protected $passwordEncoder;
+    /**
+     * Search constructor.
+     * @param EntityManagerInterface $em
+     */
+    public function __construct(EntityManagerInterface $em, UserPasswordEncoderInterface $passwordEncoder)
+    {
+        $this->em = $em;
+        $this->passwordEncoder = $passwordEncoder;
+    }
+
+    public function createUser($username, $password, $nom, $prenom, $mail, $roles, $activated)
+    {
+        $user = new User();
+        $user->setUsername($username);
+        $user->setPrenom($prenom);
+        $user->setNom($nom);
+        $user->setMail($mail);
+        $user->setRoles($roles);
+        $user->setActivated($activated);
+        $encoded = $this->passwordEncoder->encodePassword($user, $password);
+        $user->setPassword($encoded);
+
+        $this->em->persist($user);
+        $this->em->flush();
+    }
+
+}