Как я могу разрешить обычным пользователям, не являющимся администраторами, просматривать электронную почту других пользователей?
Электронная почта теперь включена в основное поле, но для обычной электронной почты для пользователей, похоже, установлено значение "закрытая"; ее могут видеть только пользователи с правами администратора или сами пользователи.
Я бы хотел, чтобы другие пользователи могли видеть это основное поле, без необходимости создавать еще одно поле электронной почты, в котором кто-то должен копировать информацию из другого другого просто для того, чтобы она была видна.
Это должно быть довольно простой/распространенной практикой, но я не могу пока ничего не нашел.
Как мне разрешить обычным пользователям, не являющимся администраторами, просматривать электронную почту других пользователей?
3 answers
У меня был похожий случай использования. Вот еще одно решение:
Я добавил новое поле электронной почты в профили пользователей и в пользовательском модуле (я сделал это в Drupal v8.1) используйте hook_user_presave
Смотрите Api Drupal:
function MYMODULE_user_presave(User $user){
$user->set('field_profile_email', $user->getEmail());
}
Затем вы можете использовать это новое поле в представлениях, например, в списке контактов отдела, как было упомянуто в комментарии к вопросу. Вы также можете использовать Разрешения на поля для дальнейшего улучшения этого.
У этого есть недостаток в создании второго поля, но эта функция позволяет избежать необходимости копировать ее вручную, и теперь она доступна в любом месте.
Один из способов, которым вы можете воспользоваться, - разрешить пользователям Просматривать информацию о пользователе и отображать эту информацию на странице профиля пользователя.
Для этого переопределите пользователь.html.ветка в вашей теме (скопируйте ее из core/modules/user/templates/user.html.twig в каталог шаблонов вашей темы), затем вставьте электронное письмо в шаблон через hook_preprocess_user()
в вашем файле mytheme.theme:
/**
* Implements hook_preprocess_user()
*/
function mytheme_preprocess_user(&$variables) {
$variables['mail'] = $variables['user']->getEmail();
}
В этом примере вы сможете пользователь {{ mail }}
, чтобы вставить переменную электронной почты в шаблон профиля пользователя.
Есть запрос функции D8 Vore на добавление разрешения на просмотр адреса электронной почты других пользователей: Добавить новое разрешение на просмотр поля электронной почты пользователя [#2799049]\| Drupal.org