обмежити користувача від певної ролі, щоб змінити свою електронну пошту


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 - дякую за приємний код, який почав мене швидко вирішувати цю проблему. У мене є веб-сайт, на якому є загальний вхід для користувача, «клієнт», щоб клієнти могли завантажувати та завантажувати файли. Обліковий запис користувача поділяться між потенційно багатьма клієнтами для "одноразового" завантаження або завантаження, і ми не хочемо, щоб вони змінювали ім'я користувача, пароль або будь-які інші речі для цього загального облікового запису. Я впевнений, що є більш елегантні способи зробити це, але ось мій код "вимкнення параметра редагування" на основі ролі користувача. (Я спробував модуль захисту користувача, але не зміг його працювати). Ось мій код на випадок, якщо хтось вважає його корисним.

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

:). будь ласка.
Юзеф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.