Làm thế nào để kiểm tra xem người dùng đã thay đổi mật khẩu chưa?


9

Tôi muốn gửi email thông báo cơ bản cho người dùng, sau khi nó đã thay đổi mật khẩu, để thông báo cho anh ta về việc thay đổi mật khẩu.

Tôi đang sử dụng Rulescác mô-đun cho điều đó. Nhưng tôi không tìm thấy bất kỳ tùy chọn nào ở đó, để thêm điều kiện nếu người dùng đã thay đổi mật khẩu.

Có cách nào tôi có thể kiểm tra xem người dùng đã thay đổi mật khẩu của mình bằng cách sử dụng các quy tắc hoặc thực tế hay không.

-- Cảm ơn vì bạn đã dành thời gian.


1
Kiểm tra điều này có thể giúp bạn drupal.stackexchange.com/questions/68380/ triệt
Samuel Beniamin

Câu trả lời:


7

Đơn giản nhất sẽ là làm điều này bằng cách sử dụng Quy tắc. Thực hiện theo các bước tiếp theo, nên làm công việc.

  1. Đảm bảo bạn đã bật "bộ lọc PHP" trên trang mô-đun. Điều này là cần thiết để có thể sử dụng mã PHP trong Rules.
  2. Tạo quy tắc phản ứng với sự kiện người dùng "Sau khi lưu tài khoản người dùng mới".
  3. Thêm một điều kiện loại "Thực thi mã PHP tùy chỉnh" và sử dụng đoạn mã sau:
    return $account_unchanged->pass != $account->pass;
  4. Thêm (các) hành động của bạn để gửi thông báo qua email cho người dùng hoặc bất kỳ điều gì khác phù hợp với mục đích của bạn.

Bạn đã thử chưa?
Aboodred1

Vâng, tôi đã kiểm tra điều này ngay trước khi tôi viết câu trả lời.
ovi

Cảm ơn, giải pháp đơn giản và hiệu quả. Hoạt động như quyến rũ !!
Kalpesh Patel

4

Tôi chưa từng thử nó trong Rules trước đây, nhưng có lẽ sẽ là vấn đề so sánh các giá trị trên $account$account->originalcác đối tượng.

Một cách để làm điều đó trong mã tùy chỉnh là triển khai 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.
  }
}

Bạn có thể có thể làm điều tương tự hook_user_update(), nhưng tôi chưa từng thử điều đó trước đây. Trên đây được lấy từ một dự án trực tiếp và hoạt động hoàn hảo.


1

Sử dụng Quy tắc có thể dễ dàng hơn vì bạn đã sử dụng nó, nhưng bạn cần kích hoạt mô-đun Bộ lọc PHP .

Các hướng dẫn như sau:

  1. Kích hoạt mô đun bộ lọc PHP admin/modules
  2. Tạo một quy tắc mới admin/config/workflow/rules
  3. Đảm bảo chọn After updating an existing user accounttừ React trên danh sách dropdow sự kiện.
  4. Thêm một điều kiện và chọn Execute custom PHP code
  5. Thêm mã tùy chỉnh PHP sau vào phần giá trị

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

  6. Sau đó thêm một hành động và chọn Send mail

  7. Trong phần giá trị thêm [account:mail]và điền vào trường chủ đề và trường thông báo.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.