IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Security : erreur lors d'une redirection vers la même route [4.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut Security : erreur lors d'une redirection vers la même route
    Bonjour,

    Avec le module Security, j'ai créé un formulaire de demande de modification du mot de passe suite à son oubli par l'utilisateur. Voici la fonction qui s'en charge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
        /**
         * User request to change its password
         * 
         * @Route("/security/resetting/request", name="security.resetting.request")
         *
         * @param Request $request
         * @param \Swift_Mailer $mailer
         * @param TokenGeneratorInterface $tokenGenerator
         * @param ObjectManager $manager
         * @param UserRepository $userRepository
         * 
         * @return Response
         */
        public function resetingRequest(Request $request, \Swift_Mailer $mailer, TokenGeneratorInterface $tokenGenerator, ObjectManager $manager, 
                                        UserRepository $userRepository): Response
        {
     
            $administrator = $userRepository->findOneBy(array('name' => 'administrator'));
     
            $form = $this->createFormBuilder()
                         ->add('email', EmailType::class, ['constraints' => [
                                                                                new Email(),
                                                                                new NotBlank()
                                                                            ]
                                                          ]
                              )
                         ->getForm();
     
            $form->handleRequest($request);
     
            if ($form->isSubmitted() && $form->isValid()) 
            {
     
                $user = $manager->getRepository(User::class)->loadUserByEmail($form->getData()['email']);
     
                if (! $user) 
                {
     
                    $this->addFlash('warning', "The email address isn't linked to a Roadtrip user.");
     
                    return $this->redirectToRoute("security.resetting");
     
                }
                else
                { 
     
                    $user->setToken($tokenGenerator->generateToken());
                    $user->setPasswordRequestedAt(new \Datetime());
                    $manager->flush(); 
     
                    $mail = new Mail;
     
                    $mail->setReceiver($user)
                        ->setSubject($this->getParameter('password_Resetting_email_subject'))
                        ->setSender($administrator)
                        ->setMessage('Password renew')
                        ->setBody($this->renderView(
                                                        'security/passwordResettingEmail.html.twig', 
                                                        ['mail' => $mail]
                                                    )
                                    )
                    ;
     
                    if ($mail->sendEmail($mailer))
                    { 
     
                        $manager->persist($mail);
                        $manager->flush();
     
                        $this->addFlash('success', "An email has been sent to the registered email address in your account so you can change your password.");
     
                        return $this->redirectToRoute("security.login");
     
                    }
                    else
                    {
     
                        $this->addFlash('warning', "Impossible to send a confirmation email to change your password.");
     
                        return $this->redirectToRoute("security.resetting");
     
                    }
     
                }
     
            }
     
            return $this->render('security/passwordResettingRequest.html.twig', ['form' => $form->createView()]);
     
        }
    Mon problème est que lorsque l'adresse email est erronée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                if (! $user) 
                {
     
                    $this->addFlash('warning', "The email address isn't linked to a Roadtrip user.");
     
                    return $this->redirectToRoute("security.resetting");
     
                }
    Je reçois l'erreur suivante :

    Some mandatory parameters are missing ("id", "token") to generate a URL for route "security.resetting".
    Je ne vois pas comment résoudre ceci, mon but étant, dans ce cas, de ré-afficher le formulaire en faisant apparaître un message comme quoi l'adresse email est invalide.

    Quelqu'un aurait une idée?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Erreur de débutant :-) La redirection se faisait vers la mauvaise route : security.resetting au lieu de security.resetting.request

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/08/2012, 17h10
  2. [Débutant] Erreur lors d"une redirection de page
    Par Pynouz dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/08/2011, 14h35
  3. [Flex4] Erreur lors de la redirection vers une page jsf
    Par amydinfo dans le forum Flex
    Réponses: 2
    Dernier message: 04/08/2010, 19h33
  4. Erreur lors d'une redirection
    Par cels dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2006, 13h39
  5. Message Erreur lors d'une redirection
    Par TOPGUN89 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/08/2006, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo