Al final lo que hice fue esto ya que symfony tiene un validador de password
Creé un modelo para el formulario donde con la anotación valido que la contraseña exista.
Código PHP:
Ver originaluse Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Security\Core\Validator\Constraints
as Assert;
class ChangePassword {
/**
* @Assert\UserPassword( message = "Contraseña actual invalida" )
* @var type
*/
protected $oldPassword;
protected $password;
public function getOldPassword(){
return $this->oldPassword;
}
public function setOldPassword($oldPassword){
$this->oldPassword = $oldPassword;
return $this;
}
public function getPassword(){
return $this->password;
}
public function setPassword($password){
$this->password = $password;
return $this;
}
}
el formType
Código PHP:
Ver originalclass ResetInsidePassType extends AbstractType{
public function buildForm
(FormBuilderInterface
$builder, array $options) { $builder->add('oldPassword', 'password')
->add('password', 'password'); //no he creado dos campos para validar la nueva password porque lo hago con javascript en el front
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array('data_class' => 'Proyecto\UsuarioBundle\Form\Model\ChangePassword')); }
public function getName() {
return 'usuariotype';
}
}
Y en el controlador valido que la contraseña actual sea la misma que está guardada:
Código PHP:
Ver originalpublic function resetPassAction(){
$request = $this->getRequest();
$changePassword = new ChangePassword();
$formulario = $this->createForm(new ResetInsidePassType, $changePassword);
$formulario->handleRequest($request);
$oldPassword = $formulario->get('oldPassword');
if($oldPassword->isValid()){
// aquí extraigo la contraseña nueva y persisto
}
return $this->render('ProyectoUsuariosBundle:Default:reset-password.html.twig', array('formulario'=>$formulario->createView()); }
Bueno, dejo esta forma como lo resolví en mi caso particular, no sé si será la forma mas correcta pero me ha funcionado, se lo dejo para quien quiera hacer algo parecido.