2017-03-14 7 views
1

fe_usersパスワードが変更されたかどうかを確認するTYPO3バックエンドフックはありますか?私はこれを試してみました:TYPO3 7.6バックエンドフック:fe_usersパスワードが変更されたかどうかを確認します

public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) { 
    if ($table === "fe_users" && stripos($id, 'NEW') === false){ 
     $pw = $fieldArray['password']; 
     die($pw); 
    } 
} 

問題があり、これは常にパスワードを返し、どちらか一方の新規またはハッシュされた1がすでに存在していれば、私はその変更されたフィールド場合か分からないでしょう。変更されたフィールドを確認する方法はありますか?

+0

あなたが「変更」で何を意味するか、より具体的に説明してください!何(以前の値)から変更?どこを変えたの? $ idと 'NEW'を比較するとき、私はfe_usersの新しい作成についてだと思いますが、fe_usersは複数の方法で作成できます。 BEからFEのさまざまな拡張機能まで、各FE拡張機能には多くのオプションがあります。 –

+0

いいえ誰かがバックエンドでユーザーを編集したときに新しいエントリーについてではなく、パスワードが変更されたかどうかを保存した後に見たいと思う。編集者はパスワードをそのまま、または新しいパスワードを入力しましたか? – Chi

答えて

0

私は解決策を見つけたようです。それが最善であるかどうかは分かりませんが、これまでのところうまくいきます。私は、processDatamap_preProcessFieldArrayはパスワードがまだプレーンテキストで利用できる場所であることを認識しているので、レジストリを使用してパスワードを保存する必要があります(後ですでにハッシュされているため、私にとっては使用できません)。

processDatamap_afterDatabaseOperationsのfieldArray値は、値が変更されたときにのみ設定されるため、パスワードキーが設定されているかどうかを確認することによって、パスワードが最初に変更されたかどうかを知ることができます。

これが私の解決策は、次のようになります。

public function processDatamap_afterDatabaseOperations($status, $table, $id, $fieldArray, $pObj) { 
    if ($table === "fe_users" && $status === "update" && isset($fieldArray['password'])) { 
     //get the password 
     $registry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Registry'); 
     $pw = $registry->get('be', 'lastPassword'); 

     //do whatever is necessary with the plain text password... 

     //remove it 
     $registry->remove('be', 'lastPassword'); 
    } 
} 

public function processDatamap_preProcessFieldArray(array &$fieldArray, $table, $id, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) { 
    if ($table === "fe_users" && stripos($id, 'NEW') === false){ 
     $pw = $fieldArray['password']; 
     $registry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Registry'); 
     $registry->set('be', 'lastPassword', $pw); 
    } 
} 
関連する問題