質問 > フロント機能 > UserPasswordバリデーションが効かない |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
gfcph |
投稿日時: 2021/8/16 17:01
対応状況: −−−
|
半人前 登録日: 2021/7/16 居住地: 投稿: 29 |
UserPasswordバリデーションが効かない ▼テンプレート
[EC-CUBE]4.0.4、新規インストール [レンタルサーバ]さくらのレンタルサーバー [OS] FreeBSD [PHP] 7.4.10 [データベース] MySQL 5.7.32 [WEBサーバ] Apache [ブラウザ]chrome [導入プラグインの有無]複数 [現象] お世話になります。 標題の件、下記サイト様 https://qiita.com/idani/items/fd6eb99bd19e56ab61a6 と管理画面側を参考に、 アカウントのパスワードの再チェックフォームをフロント側に追加しました。 ですが、正しい現在パスワードを入力しても、エラーメッセージ 「ユーザーの現在のパスワードでなければなりません。」が表示されてしまいます。 どうすれば正しい挙動となるか、わかる方いましたらご教示ください。 変更点は以下になります。 Eccube\Form\Type\Front\EntryType.phpに追記
app/template/XXXX/Mypage/change.twigに追記
宜しくお願い致します。 |
umebius |
投稿日時: 2021/8/16 21:48
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: UserPasswordバリデーションが効かない マイページのEntryTypeでは管理画面側とは違って、
'data_class' => 'Eccube\Entity\Customer',となっております。 そのためオブジェクト上、$Customerのpasswordの値はフォーム送信時にフォームから送信した'**********'もしくはユーザーが変更を加えた値で上書きされています。 それがUserPasswordバリデーションでチェックした時に一致しない理由ではないかと思います。 なのでUserPasswordを使うよりもFormEventを使うなどして独自にバリデーションした方が良い気がしますね。
|
gfcph |
投稿日時: 2021/8/18 8:31
対応状況: −−−
|
半人前 登録日: 2021/7/16 居住地: 投稿: 29 |
Re: UserPasswordバリデーションが効かない umebius様
ご教示いただき有難うございます。 ということは変更前のパスワードを保持するカラムを customerテーブルに追加し、 そことチェックを行うようになるのでしょうか。。 ご教示いただいた、FormEventを使う方向で 色々探ってみたいと思います。 |
umebius |
投稿日時: 2021/8/18 20:52
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: UserPasswordバリデーションが効かない いえ、チェックする段階ではデータベース上でパスワードは変更されていませんので、変更前のパスワードを保持するカラムを作る必要はありません。
変更されているのはあくまでPHPのオブジェクト上です。 ですので、ユーザーが入力してもらった現在のパスワードのデータをハッシュ化したものと、その時点でデータベースに登録されているデータが一致するかどうかを確認すれば良いと言うことになります。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |