e-postalarını değiştirmek için kullanıcıyı belirli bir rolden kısıtla


10

Kullanıcıları e-posta adreslerini değiştirmek için belirli bir rolden kısıtlayabilmemin herhangi bir yolu var mı? Kayıt olduktan sonra, ayarları düzenle sayfasında değiştirebilmeleri için onlara ihtiyacım var. Kullanıcı adını değiştirmeyi nasıl kısıtlayacağımı buldum, ancak e-postayı değil.

Ben Drupal 7 kullanıyorum. Gelişmiş teşekkürler :)

Yanıtlar:


8

Başka bir yol programlı olarak özel modülünüzde

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

Kullanıcı koruma modülünü kullanın :

Bu modül, kullanıcılar için çeşitli düzenleme koruması sağlayarak kullanıcı yöneticilerinin ayrıntılı erişim denetimine izin verir. Korumalar bir kullanıcıya özgü olabilir veya bir roldeki tüm kullanıcılara uygulanabilir.


Bu modülü indirdim ancak gerekli olanı yapmadı - bir kullanıcının kendi şifresini değiştirmesini engelleyemiyor. Bunun yerine, yönetici rollerinin DİĞER kullanıcının şifrelerini değiştirmesini önler.
littledynamo

3

zhilevan - bu sorunu hızlı bir şekilde çözmeme yardımcı olacak güzel kod için teşekkürler. İstemcilerin dosya yükleyip indirebilmesi için genel kullanıcı rolü "istemci" girişinin olduğu bir sitem var. Kullanıcı hesabı, "tek seferlik" yükleme veya indirme işlemi için potansiyel olarak birçok istemci arasında paylaşılacak ve bu genel hesap için kullanıcı adını, şifreyi veya başka herhangi bir şeyi değiştirmelerini istemiyoruz. Eminim bunu yapmanın daha zarif yolları vardır ama kullanıcı rolüne göre "düzenleme seçeneğini kapatma" kodum. (Kullanıcı koruma modülünü denedim, ancak çalıştıramadım). Başka birinin yararlı bulması durumunda benim kodum.

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']);
          }
      }
 }

:). rica ederim.
Yusef
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.