Возможно ли в 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