getLastAuthenticationError(); // last username entered by the user $lastUsername = $authenticationUtils->getLastUsername(); return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 'error' => $error]); } /** * @Route("/logout", name="app_logout") */ public function logout() { throw new \Exception('Don\'t forget to activate logout in security.yaml'); } /** * @Route("/admin/createuser", name="admin_createuser") */ public function createUserAction(Request $request, UserManager $userManager, UserPasswordEncoderInterface $encoder) { $user = new User; $form = $this->createForm(UserType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $encoded = $encoder->encodePassword($user, $user->getPassword()); $user->setPassword($encoded); $userManager->generateToken($user); $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); $this->addFlash('success', 'L\'utilisateur a été ajouté'); return $this->redirectToRoute('admin_index'); } return $this->render('security/createuser.html.twig', array ( 'form' => $form->createView() )); } /** * @Route("/admin/edituser/{id}", name="admin_edituser") */ public function editUserAction(Request $request, UserPasswordEncoderInterface $encoder, User $user) { $form = $this->createForm(UserEditType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->flush(); $this->addFlash('success', 'L\'utilisateur a été modifié'); return $this->redirectToRoute('admin_index'); } return $this->render('security/createuser.html.twig', array ( 'form' => $form->createView() )); } /** * @Route("/admin", name="admin_index") */ public function indexAction(Request $request) { $em = $this->getDoctrine()->getManager(); $repo = $em->getRepository('App:User'); $users = $repo->findAll(); return $this->render('security/liste.html.twig', array( 'users' => $users )); } /** * @Route("/admin/deluser/{id}", name="admin_deluser") */ public function delUserAction (Request $request, User $user, EntityManagerInterface $em) { $form = $this->get('form.factory')->create(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $em->remove($user); $em->flush(); $this->addFlash("success", "L'utilisateur a bien été supprimé"); return $this->redirectToRoute('admin_index'); } return $this->render('security/supprimeruser.html.twig', array ( 'user' => $user, 'form' => $form->createView() )); } /** * @Route("/register", name="security_register") */ public function registerAction(Request $request, UserPasswordEncoderInterface $encoder, UserManager $userManager, Mail $mail, EntityManagerInterface $em) { $user = new User(); $user->setActivated(false); $form = $this->createForm(UserRegisterType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $user->setRoles(array('ROLE_USER')); $encoded = $encoder->encodePassword($user, $user->getPassword()); $user->setPassword($encoded); $userManager->generateToken($user); $em->persist($user); $em->flush(); $adresse = $this->generateUrl('security_activate', array('token'=>$user->getToken()), UrlGeneratorInterface::ABSOLUTE_URL); $mail->sendMailActivation($user, $adresse); $this->addFlash('success', 'Votre compte a été créé. Un mail vient d\'être envoyé pour l\'activation du compte'); return $this->redirectToRoute('app_login'); } return $this->render('security/register.html.twig', array( 'form' => $form->createView() )); } /** * @Route("/motdepasseoublie", name="security_envoyertoken") */ public function recupMdpAction(Request $request, UserManager $userManager, Mail $mail, EntityManagerInterface $em) { $form = $this->createFormBuilder() ->add('email', EmailType::class) ->add('envoyer-mail', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $user = $em->getRepository('App:User')->findOneBy(array('mail'=>$data['email'])); if ($user != null) { $userManager->generateToken($user); $em->flush(); $adresse = $this->generateUrl('security_resetpassword', array('token'=>$user->getToken()), UrlGeneratorInterface::ABSOLUTE_URL); $mail->sendMailTokenMp($user, $adresse); $this->addFlash('success', "Un mail vous a été envoyé à ".$user->getUsername()." pour récupérer le mot de passe"); return $this->redirectToRoute('app_login'); } else { $this->addFlash('warning', "Cet email n'existe pas"); } } return $this->render('security/chercheruserpourpassword.html.twig', array ( 'form' => $form->createView() )); } /** * @Route("/resetpassword/token={token}", name="security_resetpassword") */ public function resetPasswordAction(Request $request, UserPasswordEncoderInterface $encoder, UserManager $userManager, EntityManagerInterface $em, User $user = null) { if ($user != null) { if ($user->isValidToken()) { $form = $this->createForm(UserEditPasswordType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $encoded = $encoder->encodePassword($user, $user->getPassword()); $user->setPassword($encoded); $userManager->generateToken($user); $em->flush(); $this->addFlash('success', 'Mot de passe changé, veuillez vous connecter'); return $this->redirectToRoute('videotheque_liste'); } return $this->render('security/password.html.twig', array( 'form' => $form->createView() )); } } $this->addFlash('warning', "Ce token n'est plus valide"); return $this->redirectToRoute('videotheque_liste'); } /** * Ne pas utiliser * @Route("/admin/resettokens", name="admin_resettokens") */ public function resetTokensAction(UserManager $userManager, EntityManagerInterface $em) { $users = $em->getRepository('App:User')->findAll(); foreach ($users as $user) { $userManager->generateToken($user); } $em->flush(); return $this->redirectToRoute('admin_index'); } /** * @Route("/activate/token={token}", name="security_activate") */ public function activateAction(Request $request, EntityManagerInterface $em, User $user = null) { if ($user != null) { if ($user->isValidToken()) { $user->setActivated(true); $em->flush(); $this->addFlash('success', "Votre compte est activé"); return $this->redirectToRoute('app_login'); } } $this->addFlash('warning', "Ce token n'est plus valide"); return $this->redirectToRoute('videotheque_liste'); } }