사용자가 비밀번호를 변경했는지 확인하는 방법?


9

비밀번호를 변경 한 후 비밀번호 변경을 알리기 위해 기본 알림 이메일을 사용자에게 보내려고했습니다.

나는 그것을 Rules위해 모듈을 사용하고 있습니다. 그러나 사용자가 암호를 변경 한 경우 조건을 추가하기위한 옵션을 찾지 못했습니다.

사용자가 규칙을 사용하거나 실제적으로 비밀번호를 변경했는지 확인할 수있는 방법이 있습니까?

-시간 내 주셔서 감사합니다.


답변:


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이벤트 드롭 다운 목록에서 반응 을 선택해야 합니다.
  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.