[英]Get new password in cleartext when a user changes it in Drupal?
在我的Drupal模塊中,我試圖鈎住用戶更改密碼的位置。 我還需要其他明文形式的內容。
所以我做了基本的事情,並使用了tcauth_user_presave()
。 然后,我更改了密碼,這觸發了日志記錄功能。 但是,當我查看日志時,提供的&$edit
, $account
和$category
變量不包含明文形式的新密碼。 唯一可用的是舊密碼(以明文形式)和新密碼被散列。
無論如何,當有人更改明文密碼時,是否可以獲得它? 如果重要的話,這就是Drupal 7。
在調用 presave掛鈎之前,密碼會在user_save()中進行哈希處理 。
看起來,除了改變表格之外,還有其他選擇。 在user_profile_form_submit( )中調用user_save()之前,將通過entity_form_submit_build_entity()幫助器函數調用hook_field_attach_submit()。 盡管它是一個字段掛鈎,但它確實將完整的用戶對象接收為$ entity。
不知道這是否真的比更改表單更好,因為鈎子是為所有實體更改而不僅僅是用戶更改而調用的。
我不確定這是否是捕獲它的最佳位置,但是在hook_form_alter中可以使用純文本輸入:
function testing_form_alter(&$form, &$form_state, $form_id) {
if ($form_id = 'user_profile_form') {
dpm($form_state['input']['pass']['pass1']);
}
}
更新 :我做了一些更多的挖掘。 我認為我要解決的方法是在user_profile_form中添加另一個提交處理程序,確保在user_profile_form_submit之前將其添加到數組中。 然后,您將擁有對密碼的完全訪問權限,然后才能由user_profile_form_submit對其進行編碼。 如果您需要更多詳細信息,請發表評論。
這是我的例子。 對於我來說,閱讀新密碼很有幫助。
/**
* Implement hook_field_attach_submit().
*/
function yourmodulename_field_attach_submit($entity_type, $entity, $form, &$form_state) {
if ($entity_type == 'user') {
// deal with $form["#user"]->pass;
}
}
在hook_user_update()
上嘗試一下
$_POST['pass']['pass2']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.