Сбросить пароль Symfony 4 (пользователь не зарегистрирован) - PullRequest
0 голосов
/ 14 января 2019

У меня проблема при попытке сбросить пароль не зарегистрированного пользователя.

Юридические лица:

class Users implements AdvancedUserInterface, \Serializable, TwoFactorInterface, TrustedDeviceInterface  {

[...]
}

Сброс пароля Действие:

public function forgetPassword(Request $request, EntityManagerInterface $em, UserPasswordEncoderInterface $encoder)
    {
        $changePasswordModel = new ChangePassword();
        $form = $this->createForm(ForgetPasswordType::class, $changePasswordModel);
        $form->handleRequest($request);


        $user = $em->getRepository("App:Users")->find(12);
        if (!$request->get('token') || !$user || $user->getTokenExpire() <= new \DateTime())
        {
            return $this->redirectToRoute("404");
        }

        if ($form->isSubmitted() && $form->isValid())
        {
            $plainPassword = $form->getData()->getNewPassword();
            $encoded = $encoder->encodePassword($user, $plainPassword);
            $user->setPassword($encoded);
            $em->persist($user);
            $em->flush();

        }

        return $this->render('security/forget_password.html.twig', array(
            'form'    => $form->createView(),
            'success' => $success
        ));
    }

Но я получаю эту ошибку:

The User object must implement the UserInterface interface.

Точное место этой ошибки: \ vendor \ symfony \ security \ Core \ Validator \ Constraints \ UserPasswordValidator.php:

[...]
 $user = $this->tokenStorage->getToken()->getUser();

        if (!$user instanceof UserInterface) {
            throw new ConstraintDefinitionException('The User object must 
            implement the UserInterface interface.');
        }
[...]

Когда пользователь вошел в систему, это работает, но когда пользователь использует пароль сброса, это потому, что он потерял свой пароль. Так что он должен работать, когда пользователь не зарегистрирован.

Спасибо за вашу помощь!

Alex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...