batasi pengguna dari peran tertentu untuk mengubah email mereka

10

Apakah ada cara saya dapat membatasi pengguna dari peran tertentu untuk mengubah alamat email mereka. Setelah mereka terdaftar saya perlu mereka tidak dapat mengubahnya di halaman pengaturan edit. Saya menemukan cara membatasi untuk mengubah nama pengguna tetapi bukan email.

Saya menggunakan Drupal 7. Terima kasih sebelumnya :)

cayerdis
sumber

Jawaban:

8

Cara lain diprogram dalam modul khusus Anda

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;
          }
      }
 }
Yusef
sumber
5

Gunakan modul Proteksi pengguna :

Modul ini memungkinkan kontrol akses yang baik dari administrator pengguna, dengan menyediakan berbagai perlindungan pengeditan bagi pengguna. Perlindungan dapat spesifik untuk pengguna, atau diterapkan untuk semua pengguna dalam suatu peran.

Hamid Nikmehr
sumber
Saya mengunduh modul ini tetapi tidak melakukan apa yang diminta - tidak dapat mencegah pengguna mengubah kata sandi mereka sendiri. Sebaliknya, ini mencegah peran admin mengubah kata sandi pengguna LAIN.
littledynamo
3

zhilevan - terima kasih untuk kode yang bagus agar saya mulai menyelesaikan masalah ini dengan cepat. Saya memiliki situs di mana ada peran pengguna umum "klien" masuk sehingga klien dapat mengunggah dan mengunduh file. Akun pengguna akan dibagikan di antara banyak klien yang berpotensi untuk diunggah atau unduh "satu kali" dan kami tidak ingin mereka mengubah nama pengguna, kata sandi, atau hal lain apa pun untuk akun umum ini. Saya yakin ada cara yang lebih elegan untuk melakukan ini, tetapi ini kode saya untuk "mematikan opsi edit" berdasarkan peran pengguna. (Saya mencoba modul pelindung pengguna, tetapi tidak bisa berfungsi). Inilah kode saya jika ada orang lain yang merasa berguna.

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']);
          }
      }
 }
Leanderl
sumber
:) sama-sama.
Yusef