限制用户更改角色以更改其电子邮件


10

有什么办法可以限制用户从某些角色更改其电子邮件地址。一旦注册,就不需要他们在编辑设置页面中对其进行更改。我发现了如何限制更改用户名而不更改电子邮件。

我正在使用Drupal7。在高级感谢:)

Answers:


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 –感谢提供了不错的代码,可以帮助我快速开始解决此问题。我在一个站点上有一个通用的用户角色“客户端”登录名,以便客户端可以上载和下载文件。用户帐户可能会在许多客户端之间共享,以进行“一次性”上传或下载,我们不希望他们更改此通用帐户的用户名,密码或其他任何内容。我敢肯定有更优雅的方法可以做到这一点,但这是我的代码,用于根据用户角色“关闭编辑选项”。(我尝试了用户保护模块,但无法使其正常工作)。如果有人发现它有用,这是我的代码。

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.