mój problem polega na tym, iż nie jestem przekonany co do sposobu jaki powinienem zastosować, aby przesłać do bazy hash hasła, które użytkownik poda w formularzu.
Formularz (wycinek):
//... ->add( 'userPassword', 'repeated', 'type' => 'password', 'invalid_message' => 'Hasła muszą być takie same.', 'max_length' => 128, 'label' => 'Hasło:' ), 'label' => 'Powtórz hasło:' ) ) ) //...
...walidacja:
if ($form->isValid()) { $manager->persist($user); $manager->flush(); return $this->redirect( ); }
Przeglądałem setki tematów, w których przewijały się różne "rozwiązania": od pliku security.yml po FOSUserBundle. Niestety nigdzie nie widziałem zastosowania tych rozwiązań do mojego problemu.
Przykładowo, czy coś takie będzie odpowiednie:
//... $user->setUserPassword(encode_password($salt, $user->getUserPassword())); $manager->persist($user); $manager->flush(); return $this->redirect( ); //...
Rozwiązanie dla potomnych:
Kod
#app/config/security.yml
security:
encoders:
Acme\UserBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
security:
encoders:
Acme\UserBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
//... $password = $this->get('security.encoder_factory') ->getEncoder($user) ->encodePassword($user->getUserPassword(), $user->getUserSalt()); //...