2016-08-10 4 views
1

symfony 2を使用して私の会社のWebプラットフォームを構築しています。最近、私は次のコードを追加して、私のUserエンティティの内部で検証ルールを変更した:パスワードの検証ルールを変更しても、古いユーザはログインできません

/** 
* @Assert\Regex(
*  pattern="/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,127}$/", 
*  message="edit.personnal_info.udpate.message.password_info_regex", 
*  groups={"registration"} 
*) 
*/ 
protected $plainPassword; 

は、この変更の後、すべての私の古い作成したユーザーはもうログインできません。有効なパスワードを持つ新しいユーザーだけが接続できます。

古いパスワードをすべて変更したくありません。したがって、ログイン中に検証ルールをスキップする方法があれば、それは問題ありません。

Ps:私はFOSUserBundleを使用しています。

+0

ログイン時に使用する検証グループを指定する必要があります。http://symfony.com/doc/current/form/validation_groups.html FOSUserBundleを使用して長い時間前に覚えていますので、詳細はわかりません。 – Cerad

+0

本当に登録ルールを変更しただけですか?このルールにはログインするものはありません。 –

+0

はい@KamilAdryjanek、Assertアノテーションを削除したときに動作するので確信しています – Jemmoudi

答えて

0

ソリューションあなたの問題は、あなたが登録にそれを追加して、パスワードの形式を変えることができるエンティティに拘束し、これを追加する古いユーザーは短いパスワードを使用して、次のパスワードの変更

の代わりになるまでそれらをサポートしたいということであれば

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('plainPassword', PasswordType::class, [ 
      'constraints' => [ 
       new Regex([ 
        'pattern' => '/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,127}$/' 
       ]), 
       new NotBlank() 
      ] 
     ]); 
} 

このようにして、古いユーザーのロジックを壊すことなく、新しいユーザーに対して新しいパスワードポリシーを適用することができます。

+0

ありがとう、これは良いアプローチです! – Jemmoudi

関連する問題