จะตรวจสอบว่าผู้ใช้เปลี่ยนรหัสผ่านได้อย่างไร?


9

ฉันต้องการส่งอีเมลแจ้งเตือนขั้นพื้นฐานไปยังผู้ใช้หลังจากเปลี่ยนรหัสผ่านเพื่อแจ้งให้เขาทราบเกี่ยวกับการเปลี่ยนรหัสผ่าน

ฉันกำลังใช้Rulesโมดูลสำหรับสิ่งนั้น แต่ฉันไม่พบตัวเลือกใด ๆ เพื่อเพิ่มเงื่อนไขหากผู้ใช้เปลี่ยนรหัสผ่าน

มีวิธีใดบ้างที่ฉันสามารถตรวจสอบว่าผู้ใช้เปลี่ยนรหัสผ่านโดยใช้กฎหรือในทางปฏิบัติ

- ขอบคุณมากสำหรับเวลาของคุณ


1
ตรวจสอบสิ่งนี้อาจช่วยคุณdrupal.stackexchange.com/questions/68380/…
Samuel Beniamin

คำตอบ:


7

วิธีที่ง่ายที่สุดคือการใช้กฎ ทำตามขั้นตอนต่อไปควรทำงาน

  1. ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งาน "ตัวกรอง PHP" ในหน้าโมดูล สิ่งนี้จำเป็นเพื่อให้สามารถใช้รหัส PHP ภายในกฎ
  2. สร้างกฎที่ตอบสนองต่อเหตุการณ์ผู้ใช้ "หลังจากบันทึกบัญชีผู้ใช้ใหม่"
  3. เพิ่มเงื่อนไขประเภท "เรียกใช้โค้ด PHP ที่กำหนดเอง" และใช้ข้อมูลโค้ดต่อไปนี้:
    return $account_unchanged->pass != $account->pass;
  4. เพิ่มการกระทำของคุณเพื่อส่งการแจ้งเตือนทางอีเมลไปยังผู้ใช้หรือสิ่งอื่น ๆ ที่เหมาะกับคุณ

คุณเคยลองไหม
Aboodred1

ใช่ฉันทดสอบสิ่งนี้ก่อนที่ฉันจะเขียนคำตอบ
ovi

ขอบคุณวิธีแก้ปัญหาที่ง่ายและมีประสิทธิภาพ ทำงานเหมือนจับใจ !!
Kalpesh Patel

4

ฉันไม่เคยลองในกฎมาก่อน แต่อาจเป็นเรื่องของการเปรียบเทียบค่าใน$accountและ$account->originalวัตถุ

วิธีหนึ่งในรหัสที่กำหนดเองคือการใช้งานhook_user_presave():

function MYMODULE_user_presave(&$edit, $account, $category) {
  // Don't show message for registering users.
  if (isset($account->is_new) && $account->is_new) {
    return;
  }

  if (!empty($edit['pass']) && $account->pass != $edit['pass']) {
    // Password has been changed.
  }
}

คุณอาจทำสิ่งเดียวกันได้hook_user_update()แต่ฉันไม่เคยลองมาก่อน ข้างต้นนำมาจากโครงการถ่ายทอดสดและทำงานได้อย่างสมบูรณ์แบบ


1

การใช้กฎอาจทำได้ง่ายกว่าเนื่องจากคุณใช้อยู่แล้ว แต่คุณต้องเปิดใช้งานโมดูลตัวกรอง PHP

คำแนะนำดังต่อไปนี้:

  1. เปิดใช้งานโมดูลตัวกรอง PHP admin/modules
  2. สร้างกฎใหม่ admin/config/workflow/rules
  3. ตรวจสอบให้แน่ใจว่าเลือกAfter updating an existing user accountจาก React ในรายการดร็อปดาวน์เหตุการณ์
  4. เพิ่มเงื่อนไขและเลือก Execute custom PHP code
  5. เพิ่มรหัสที่กำหนดเอง PHP ต่อไปนี้ในส่วนค่า

    if(!empty($account->current_pass)) { return true; }

  6. จากนั้นเพิ่มการกระทำและเลือก Send mail

  7. ในส่วนค่าให้เพิ่ม[account:mail]และเติมฟิลด์หัวเรื่องและฟิลด์ข้อความ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.