Bagaimana cara memeriksa apakah pengguna telah mengubah kata sandi?

9

Saya ingin mengirim email pemberitahuan dasar kepada pengguna, setelah kata sandi diubah, untuk memberi tahu dia tentang perubahan kata sandi.

Saya menggunakan Rulesmodul untuk itu. Tapi saya tidak menemukan opsi di sana, untuk menambah kondisi jika pengguna telah mengubah kata sandi.

Apakah ada cara saya dapat memeriksa apakah pengguna telah mengubah kata sandi menggunakan aturan atau secara pragmatis.

- Terima kasih banyak atas waktu Anda.

Kalpesh Patel
sumber
1
Periksa ini dapat membantu Anda drupal.stackexchange.com/questions/68380/…
Samuel Beniamin

Jawaban:

7

Cara termudah adalah dengan menggunakan Aturan. Mengikuti langkah selanjutnya, harus melakukan pekerjaan.

  1. Pastikan Anda telah mengaktifkan "filter PHP" pada halaman modul. Ini diperlukan untuk dapat menggunakan kode PHP di dalam Aturan.
  2. Buat aturan yang bereaksi pada acara pengguna "Setelah menyimpan akun pengguna baru".
  3. Tambahkan kondisi ketik "Jalankan kode PHP khusus" dan gunakan cuplikan berikut:
    return $account_unchanged->pass != $account->pass;
  4. Tambahkan tindakan Anda untuk mengirim pemberitahuan email kepada pengguna atau hal lain yang sesuai dengan tujuan Anda.
ovi
sumber
Sudahkah Anda mencobanya?
Aboodred1
Ya, saya menguji ini sebelum saya menulis jawabannya.
ovi
Terima kasih, solusi sederhana dan efisien. Bekerja seperti pesona !!
Kalpesh Patel
4

Saya belum mencobanya dalam Aturan sebelumnya, tetapi mungkin akan menjadi masalah membandingkan nilai pada objek $accountdan $account->original.

Salah satu cara untuk melakukannya dalam kode khusus adalah dengan mengimplementasikan 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.
  }
}

Anda mungkin bisa melakukan hal yang sama hook_user_update(), tetapi saya belum pernah mencobanya sebelumnya. Di atas diambil dari proyek langsung dan bekerja dengan sempurna.

Clive
sumber
1

Menggunakan Aturan mungkin lebih mudah karena Anda sudah menggunakannya, tetapi Anda perlu mengaktifkan modul Filter PHP .

Petunjuknya sebagai berikut:

  1. Aktifkan modul Filter PHP admin/modules
  2. Buat Aturan baru admin/config/workflow/rules
  3. Pastikan untuk memilih After updating an existing user accountdari Bereaksi pada daftar acara dropdow.
  4. Tambahkan kondisi dan pilih Execute custom PHP code
  5. Tambahkan kode khusus PHP berikut di bagian nilai

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

  6. Kemudian tambahkan tindakan dan pilih Send mail

  7. Di bagian nilai tambah [account:mail]dan isi bidang subjek dan bidang pesan.
Aboodred1
sumber