Nuevo en la versión 2.1: Esta restricción es nueva en la versión 2.1.
Nota
Since Symfony 2.2, the UserPassword* classes in the SymfonyComponentSecurityCoreValidatorConstraint namespace are deprecated and will be removed in Symfony 2.3. Please use the UserPassword* classes in the SymfonyComponentSecurityCoreValidatorConstraints namespace instead.
Esta verifica que un valor ingresado sea igual a la contraseña del usuario actualmente autenticado. Esto es útil en un formulario donde el usuario puede cambiar su contraseña, pero por seguridad, tiene que introducir su antigua contraseña.
Nota
No lo deberías usar para validar un formulario de acceso, ya que esto lo hace automáticamente el sistema de seguridad.
Applies to | property or method |
Options | |
Class | Symfony\Component\Security\Core\Validator\Constraints\UserPassword |
Validator | Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator |
Supongamos que tienes una clase PasswordChange, que se utiliza en un formulario donde el usuario puede cambiar su contraseña, introduciendo su contraseña antigua y una nueva contraseña. Esta restricción validará que la contraseña anterior coincide con la contraseña actual del usuario:
# src/UserBundle/Resources/config/validation.yml
Acme\UserBundle\Form\Model\ChangePassword:
properties:
oldPassword:
- Symfony\Component\Security\Core\Validator\Constraints\UserPassword:
mensaje: "Wrong value for your current password"
// src/Acme/UserBundle/Form/Model/ChangePassword.php
namespace Acme\UserBundle\Form\Model;
use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert;
class ChangePassword
{
/**
* @SecurityAssert\UserPassword(
* message = "Wrong value for your current password"
* )
*/
protected $oldPassword;
}
<!-- src/UserBundle/Resources/config/validation.xml -->
<class name="Acme\UserBundle\Form\Model\ChangePassword">
<property name="Symfony\Component\Security\Core\Validator\Constraints\UserPassword">
<option name="message">Wrong value for your current password</option>
</property>
</class>
// src/Acme/UserBundle/Form/Model/ChangePassword.php
namespace Acme\UserBundle\Form\Model;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Security\Core\Validator\Constraints as SecurityAssert;
class ChangePassword
{
public static function loadValidatorData(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('oldPassword', new SecurityAssert\UserPassword(array(
'message' => 'Wrong value for your current password',
)));
}
}