Bonjour,
Je suis en train de créer une api sous symfony 3 pour une application mobile afin de gérer la réinitialisation du mot de passe
tout fonctionne sur postman, mais quand je teste sur mobile, c'est différent
J'arrive à envoyer la demande par email afin de modifier le mot de passe mais je n'arrive pas à gérer la redirection du lien dans l'url de l'application mobile pour que l'utilisateur puisse entrer son nouveau mot de passe
actuellement, quand je clique sur le lien, j'ai ce message d'erreur :
No route found for "GET /api/password/reset/confirm/7/rTaLoObBbqrnosXnQMJuFvmAIiEibrKMTnk0Af": Method Not Allowed (Allow: POST)
voici quelques parties de mon code :
Controller :
/**
* @Annotations\Post("/reset/request")
*/
public function requestResetAction(Request $request)
{
$username = $request->request->get('username');
/**
* @var $user UserInterface
*/
$user = $this->get('fos_user.user_manager')->findUserByUsernameOrEmail($username);
/**
* @var $dispatcher EventDispatcherInterface
*/
$dispatcher = $this->get('event_dispatcher');
/* Dispatch init event */
$event = new GetResponseNullableUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::RESETTING_SEND_EMAIL_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
if (null === $user) {
return new JsonResponse(
'User not recognised',
JsonResponse::HTTP_FORBIDDEN
);
}
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::RESETTING_RESET_REQUEST, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
if (null === $user->getConfirmationToken()) {
/**
* @var $tokenGenerator \FOS\UserBundle\Util\TokenGeneratorInterface
*/
$tokenGenerator = $this->get('fos_user.util.token_generator');
$user->setConfirmationToken($tokenGenerator->generateToken());
}
/* Dispatch confirm event */
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::RESETTING_SEND_EMAIL_CONFIRM, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$this->get('fos_user.mailer')->sendResettingEmailMessage($user);
$user->setPasswordRequestedAt(new \DateTime());
$this->get('fos_user.user_manager')->updateUser($user);
/* Dispatch completed event */
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::RESETTING_SEND_EMAIL_COMPLETED, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
return new JsonResponse(
$this->get('translator')->trans(
'Check your emails',
[ '%tokenLifetime%' => floor($this->container->getParameter('fos_user.resetting.token_ttl') / 3600) ],
'FOSUserBundle'
),
JsonResponse::HTTP_OK
);
}
Mailer
public function sendResettingEmailMessage(UserInterface $user)
{
$template = $this->parameters['template']['resetting'];
$url = $this->router->generate('confirm_password_reset', array('id'=>$user->getId(),'token' => $user->getConfirmationToken()),UrlGeneratorInterface::ABSOLUTE_URL);
$context = [
'user' => $user,
'confirmationUrl' => $url
];
$this->sendMessage($template, $context, $this->parameters['from_email']['resetting'], $user->getEmail());
}
Quelqu'un aurait une idée de comment je pourrais gérer la redirection du lien contenu dans l'email pour renvoyer l'utilisateur sur l'appli mobile afin qu'il puisse terminer sa reini de mot de passe s'il vous plait ? merci d'avance et bonne journée