repository with issueSymfony 3, पॉप्युलेट टोकन और ताज़ा उपयोगकर्ता
मैं ईमेल क्षेत्र के साथ इकाई उपयोगकर्ता के लिए एक रूप है:
->add('email', EmailType::class, [
'constraints' => [
new NotBlank(),
new Email([
'checkMX' => true,
])
],
'required' => true
])
जब मैं ईमेल संपादन कर रहा हूँ कुछ करने के लिए [email protected]
की तरह और फ़ॉर्म सबमिट यह मुझे पता चलता त्रुटि "यह मान मान्य ईमेल पता नहीं है।" कि ठीक है, लेकिन है कि सिम्फोनी के बाद टोकन में गलत ईमेल पॉप्युलेट और जब मैं किसी अन्य पृष्ठ पर जाकर कर रहा हूँ या सिर्फ फिर से लोड पृष्ठ, मैं इस हो रही है:
चेतावनी सुरक्षा प्रयोक्ता नाम चयनित में नहीं पाया जा सका उपयोगकर्ता प्रदाता।
मुझे लगता है कि सवाल यह है: क्यों सिम्फनी गलत ईमेल पॉप्युलेट करता है जो टोकन में सत्यापन विफल रहा और मैं इसे कैसे रोक सकता हूं?
नियंत्रक:
public function meSettingsAction(Request $request)
{
$user = $this->getUser();
$userUnSubscribed = $this->getDoctrine()->getRepository('AppBundle:UserUnsubs')->findOneBy(
[
'email' => $user->getEmail(),
]
);
$form = $this->createForm(UserSettingsType::class, $user);
$form->get('subscribed')->setData(!(bool)$userUnSubscribed);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/**
* @var $user User
*/
$user = $form->getData();
/** @var UploadedFile $avatar */
$avatar = $request->files->get('user_settings')['photo'];
$em = $this->getDoctrine()->getManager();
if ($avatar) {
$avatar_content = file_get_contents($avatar->getRealPath());
$avatarName = uniqid().'.jpg';
$oldAvatar = $user->getPhoto();
$user
->setState(User::PHOTO_STATE_UNCHECKED)
->setPhoto($avatarName);
$gearmanClient = $this->get('gearman.client');
$gearmanClient->doBackgroundDependsOnEnv(
'avatar_content_upload',
serialize(['content' => $avatar_content, 'avatarName' => $avatarName, 'oldAvatar' => $oldAvatar])
);
}
$subscribed = $form->get('subscribed')->getData();
if ((bool)$userUnSubscribed && $subscribed) {
$em->remove($userUnSubscribed);
} elseif (!(bool)$userUnSubscribed && !$subscribed) {
$userUnSubscribed = new UserUnsubs();
$userUnSubscribed->setEmail($form->get('email')->getData())->setTs(time());
$em->persist($userUnSubscribed);
}
$user->setLastTs(time());
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
$this->get('user.manager')->refresh($user);
return $this->redirectToRoute('me');
}
return $this->render(
':user:settings.html.twig',
[
'form' => $form->createView(),
]
);
}
युपीडी: यह ठीक काम करता है अगर मैं OAuthProvider में बदलने के लिए:
/**
* @param \Symfony\Component\Security\Core\User\UserInterface $user
*
* @return \Symfony\Component\Security\Core\User\UserInterface
*/
public function refreshUser(UserInterface $user)
{
return $this->loadUserByUsername($user->getName());
}
रहे हैं:
/**
* @param \Symfony\Component\Security\Core\User\UserInterface $user
*
* @return \Symfony\Component\Security\Core\User\UserInterface
*/
public function refreshUser(UserInterface $user)
{
return $this->userManager($user->getId());
}
लेकिन यह गंदा हैक हो रहा है ।
धन्यवाद।
क्या आप अपना नियंत्रक दिखा सकते हैं? –
@AlessandroMinoccheri मैंने प्रश्न के लिए नियंत्रक कोड जोड़ा है। – kRicha
'रीफ्रेश यूज़र()' क्यों कहा जाता है कि ईमेल गलत है या नहीं? कृपया अपनी serurity.yml कॉन्फ़िगरेशन के बारे में कुछ और जानकारी जोड़ें। – lordrhodos