Возможно ли в Drupal 8 разрешить зарегистрированным пользователям сайта видеть адреса электронной почты друг друга?

Я разрабатываю веб-сайт Drupal 8 для небольшой добровольной организации доверенных членов. Для тех, кто играет определенную роль на веб-сайте, мы хотели бы использовать просмотр для отображения всей информации о зарегистрированных пользователях (только для других зарегистрированных пользователей). У меня View работает нормально, но поле электронной почты отображается только для пользователей с правами администратора.

Я проверил разрешения безрезультатно, и несколько часов перечитывал различные посты, но ни один из них, похоже, не отвечает на вопрос.

Идеально пытается решить это в CMS, но с удовольствием делает PHP, если это необходимо.

Снимок экрана: текущий просмотр вывода в качестве администратора Я пытаюсь сохранить поле электронной почты при просмотре в качестве зарегистрированного пользователя без прав администратора.

1 ответ

Решение

Наконец-то нашлось жизнеспособное решение для исправления этой проблемы - спасибо тем, кто его написал. Патч - это всего лишь несколько строк в двух файлах PHP, которые создают новые параметры разрешений для просмотра адресов электронной почты других пользователей.

Патч ниже, из этого поста на Drupal.

From b0c658e8707f1b851caf700eec9ee4001b6dbbb6 Mon Sep 17 00:00:00 2001
From: Axel Rutz <axel.rutz@machbarmacher.net>
Date: Sat, 22 Dec 2018 02:40:28 +0100
Subject: [PATCH] Issue #2799049 by cilefen, axel.rutz: Add new permission to
 view user email field

---
 core/modules/user/src/UserAccessControlHandler.php | 3 +++
 core/modules/user/user.permissions.yml             | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/core/modules/user/src/UserAccessControlHandler.php b/core/modules/user/src/UserAccessControlHandler.php
index 9e04c3ffda..486ee744a0 100644
--- a/core/modules/user/src/UserAccessControlHandler.php
+++ b/core/modules/user/src/UserAccessControlHandler.php
@@ -120,6 +120,9 @@ protected function checkFieldAccess($operation, FieldDefinitionInterface $field_
         // Allow view access to own mail address and other personalization
         // settings.
         if ($operation == 'view') {
+          if ($field_definition->getName() === 'mail' && $account->hasPermission('view user mail field')) {
+            return AccessResult::allowed()->cachePerPermissions();
+          }
           return $is_own_account ? AccessResult::allowed()->cachePerUser() : AccessResult::neutral();
         }
         // Anyone that can edit the user can also edit this field.
diff --git a/core/modules/user/user.permissions.yml b/core/modules/user/user.permissions.yml
index a295b1f98f..f21f1deea4 100644
--- a/core/modules/user/user.permissions.yml
+++ b/core/modules/user/user.permissions.yml
@@ -11,6 +11,8 @@ administer users:
   restrict access: true
 access user profiles:
   title: 'View user information'
+view user mail field:
+  title: 'View user mail field'
 change own username:
   title: 'Change own username'
 select account cancellation method:
-- 
2.17.1
Другие вопросы по тегам