이메일을 변경하기 위해 특정 역할에서 사용자를 제한


10

이메일 주소를 변경하기 위해 특정 역할의 사용자를 제한 할 수있는 방법이 있습니까? 일단 등록되면 편집 설정 페이지에서 변경할 수 없습니다. 이메일이 아닌 사용자 이름 변경을 제한하는 방법을 찾았습니다.

Drupal 7을 사용하고 있습니다. 고급 감사합니다 :)

답변:


8

다른 방법은 사용자 정의 모듈에서 프로그래밍 방식으로

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('your role',$user->roles) && isset($form['account'])) {
           $form['account']['mail']['#disabled']=TRUE;
          }
      }
 }

5

사용자 보호 모듈을 사용하십시오 .

이 모듈은 사용자에게 다양한 편집 보호 기능을 제공하여 사용자 관리자의 세분화 된 액세스 제어를 허용합니다. 보호는 사용자에게 고유하거나 역할의 모든 사용자에게 적용될 수 있습니다.


이 모듈을 다운로드했지만 필요한 작업을 수행하지 않았습니다. 사용자가 자신의 비밀번호를 변경하지 못하도록 막을 수 없습니다. 오히려 관리자 역할이 다른 사용자의 비밀번호를 변경하지 못하게합니다.
littledynamo

3

zhilevan –이 문제를 신속하게 해결하는 데 도움이되는 멋진 코드 덕분입니다. 클라이언트가 파일을 업로드하고 다운로드 할 수 있도록 일반 사용자 역할 "client"로그인이있는 사이트가 있습니다. 사용자 계정은 "일회용"업로드 또는 다운로드를 위해 잠재적으로 많은 클라이언트간에 공유되며이 일반 계정의 사용자 이름, 비밀번호 또는 기타 항목을 변경하지 않기를 바랍니다. 이 작업을 수행하는 데 더 우아한 방법이 있다고 확신하지만 사용자 역할에 따라 "편집 옵션을 내리는"코드가 있습니다. (사용자 보호 모듈을 시도했지만 작동하지 못했습니다). 다른 사람이 유용하다고 생각하는 경우를 대비하여 내 코드가 있습니다.

function mymodule_form_alter(&$form,$form_state,$form_id) {
   global $user;
    if ($form_id == "user_profile_form") {
       if(in_array('Client',$user->roles) && isset($form['account'])) {

           $form['account']['name']['#disabled']=TRUE;
           $form['account']['current_pass']['#disabled']=TRUE;
           $form['account']['current_pass']['#description']='';
           $form['account']['mail']['#disabled']=TRUE;

           unset($form['picture']);
           unset($form['overlay_control']);
          }
      }
 }

:). 천만에요.
Yusef
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.