فهرست منبع

Service pour la génération du token (à revoir)

François 6 سال پیش
والد
کامیت
8d04197658

+ 11 - 8
src/AppBundle/Controller/SecurityController.php

@@ -6,6 +6,7 @@ use AppBundle\Form\UserEditPasswordType;
 use AppBundle\Form\UserEditType;
 use AppBundle\Form\UserRegisterType;
 use AppBundle\Service\Mail;
+use AppBundle\Service\UserManager;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Symfony\Component\Form\Extension\Core\Type\SearchType;
 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
@@ -35,7 +36,7 @@ class SecurityController extends Controller
     /**
      * @Route("/admin/createuser", name="admin_createuser")
      */
-    public function createUserAction(Request $request, UserPasswordEncoderInterface $encoder)
+    public function createUserAction(Request $request, UserManager $userManager, UserPasswordEncoderInterface $encoder)
     {
         $user = new User;
         $form = $this->createForm(UserType::class, $user);
@@ -45,6 +46,7 @@ class SecurityController extends Controller
         {
             $encoded = $encoder->encodePassword($user, $user->getPassword());
             $user->setPassword($encoded);
+            $userManager->generateToken($user);
             $em = $this->getDoctrine()->getManager();
             $em->persist($user);
             $em->flush();
@@ -112,7 +114,7 @@ class SecurityController extends Controller
     /**
      * @Route("/register", name="security_register")
      */
-    public function registerAction(Request $request, UserPasswordEncoderInterface $encoder, Mail $mail)
+    public function registerAction(Request $request, UserPasswordEncoderInterface $encoder, UserManager $userManager, Mail $mail)
     {
         $user = new User();
         $user->setActivated(false);
@@ -123,6 +125,7 @@ class SecurityController extends Controller
             $user->setRoles(array('ROLE_USER'));
             $encoded = $encoder->encodePassword($user, $user->getPassword());
             $user->setPassword($encoded);
+            $userManager->generateToken($user);
             $em = $this->getDoctrine()->getManager();
             $em->persist($user);
             $em->flush();
@@ -143,7 +146,7 @@ class SecurityController extends Controller
     /**
      * @Route("/motdepasseoublie", name="security_envoyertoken")
      */
-    public function recupMdpAction(Request $request, Mail $mail)
+    public function recupMdpAction(Request $request, UserManager $userManager, Mail $mail)
     {
         $form = $this->createFormBuilder()
             ->add('email', SearchType::class)
@@ -157,7 +160,7 @@ class SecurityController extends Controller
             $user = $em->getRepository('AppBundle:User')->findOneBy(array('mail'=>$data['email']));
             if ($user != null)
             {
-                $user->setToken();
+                $userManager->generateToken($user);
                 $em->flush();
                 $adresse = $this->generateUrl('security_resetpassword', array('token'=>$user->getToken()), UrlGeneratorInterface::ABSOLUTE_URL);
 
@@ -177,7 +180,7 @@ class SecurityController extends Controller
     /**
      * @Route("/resetpassword/token={token}", name="security_resetpassword")
      */
-    public function resetPasswordAction(Request $request, UserPasswordEncoderInterface $encoder, User $user = null)
+    public function resetPasswordAction(Request $request, UserPasswordEncoderInterface $encoder, UserManager $userManager, User $user = null)
     {
         if ($user != null) {
             if ($user->isValidToken()) {
@@ -186,7 +189,7 @@ class SecurityController extends Controller
                 if ($form->isSubmitted() && $form->isValid()) {
                     $encoded = $encoder->encodePassword($user, $user->getPassword());
                     $user->setPassword($encoded);
-                    $user->setToken();
+                    $userManager->generateToken($user);
                     $em = $this->getDoctrine()->getManager();
                     $em->flush();
                     $this->addFlash('success', 'Mot de passe changé, veuillez vous connecter');
@@ -206,13 +209,13 @@ class SecurityController extends Controller
      * Ne pas utiliser
      * @Route("/admin/resettokens", name="admin_resettokens")
      */
-    public function resetTokensAction()
+    public function resetTokensAction(UserManager $userManager)
     {
         $em = $this->getDoctrine()->getManager();
         $users = $em->getRepository('AppBundle:User')->findAll();
         foreach ($users as $user)
         {
-            $user->setToken();
+            $userManager->generateToken($user);
         }
         $em->flush();
         return $this->redirectToRoute('admin_index');

+ 0 - 1
src/AppBundle/Controller/VideothequeController.php

@@ -32,7 +32,6 @@ class VideothequeController extends Controller
 	{
 		$em = $this->getDoctrine()->getManager();
 		$repo = $em->getRepository('AppBundle:Film');
-		//$listeFilms = $repo->findAll();
         $listeFilms = $repo->findTous();
 
 		return $this->render('@App/videotheque/liste.html.twig', array(

+ 4 - 3
src/AppBundle/Entity/User.php

@@ -309,9 +309,10 @@ class User implements AdvancedUserInterface
      *
      * @return User
      */
-    public function setToken()
+    public function setToken($token)
     {
-        $this->token = hash("sha512", uniqid());
+        //$this->token = hash("sha512", uniqid());
+        $this->token = $token;
         $this->setTokenValidity(new \DateTime());
 
         return $this;
@@ -388,7 +389,7 @@ class User implements AdvancedUserInterface
     public function __construct()
     {
         $this->films = new \Doctrine\Common\Collections\ArrayCollection();
-        $this->setToken();
+        //$this->setToken();
         $this->setLastActivity(new \DateTime('now'));
         $this->setActivated(true);
     }

+ 9 - 1
src/AppBundle/Service/UserManager.php

@@ -5,6 +5,7 @@ namespace AppBundle\Service;
 use AppBundle\Entity\User;
 use Doctrine\ORM\EntityManagerInterface;
 use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
+use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
 
 /**
  * Agir sur les utilisateurs
@@ -13,14 +14,16 @@ class UserManager
 {
     protected $em;
     protected $passwordEncoder;
+    protected $tokenGenerator;
     /**
      * Search constructor.
      * @param EntityManagerInterface $em
      */
-    public function __construct(EntityManagerInterface $em, UserPasswordEncoderInterface $passwordEncoder)
+    public function __construct(EntityManagerInterface $em, UserPasswordEncoderInterface $passwordEncoder, TokenGeneratorInterface $tokenGenerator)
     {
         $this->em = $em;
         $this->passwordEncoder = $passwordEncoder;
+        $this->tokenGenerator = $tokenGenerator;
     }
 
     public function createUser($username, $password, $nom, $prenom, $mail, $roles, $activated)
@@ -39,4 +42,9 @@ class UserManager
         $this->em->flush();
     }
 
+    public function generateToken(User $user)
+    {
+        $user->setToken($this->tokenGenerator->generateToken());
+    }
+
 }