Эй, ребята, я работаю над функцией восстановления пароля.Пользователь нажимает на URL, полученный по почте, и предоставляет _password1 и _password2.Если они совпадают, это сохраняет его в базу данных.Проблема в том, что он не удаляет токен из базы данных ... Я попробовал несколько вещей, но не могу понять, как это правильно.У меня нет сообщений об ошибках.
Просто пропустите удаление.Я новичок в Symfony, и это моя первая попытка удаления. Lol
/**
* @Route("/password-change")
*/
class ResettingController extends Controller
{
/**
* @Route("/{id}/{token}", name="resetting")
* @param ResettingController $event
*/
public function resetting(User $user, $token, Request $request)
{
// Find the token in the database
$tokendb = $this->getDoctrine()
->getRepository('AppBundle\\Entity\\PasswordToken'::class)
->findOneBy(array('token'=>$token));
//Redirect if token is not valid
if ($token == "" || !$tokendb || $token!=$tokendb->getToken())
{
$request->getSession()->getFlashBag()->add('error', "Lien d'accès invalide");
return $this->redirectToRoute('security_login');
}
// Building the form for the view
$form = $this->createFormBuilder()
->add('_password1', PasswordType::class, array("label"=>"Entrez un nouveau mot de passe:"))
->add('_password2', PasswordType::class, array("label"=>"Retapez ce même mot de passe:"))
->getForm();
$form->handleRequest($request);
// When form is submited
if($form->isSubmitted() && $form->isValid())
{
// Check if password 1 and 2 matches
if( $request->request->get('form')['_password1'] && $request->request->get('form')['_password1'] == $request->request->get('form')['_password2'])
{
// Save the new password
$user->setplainPassword( $request->request->get('form')['_password1'] );
// Delete the token
$em = $this->getDoctrine()->getEntityManager();
$em->remove($tokendb);
// success message and redirect
$request->getSession()->getFlashBag()->add('success', "Votre mot de passe a été modifié.");
return $this->redirectToRoute('security_login');
}else{
$request->getSession()->getFlashBag()->add('error', "Vos deux mot de passe ne correspondent pas.");
}
}
// Sending the view
return $this->render('Security/change-password.html.twig', [
'form' => $form->createView(),
'title' => "Changement de mot de passe",
'error' => $form->getErrors()
]);
}
}