Làm cách nào để tôi cho phép người dùng không phải quản trị viên thường xuyên xem email của người dùng khác?


8

Email hiện là một trường được bao gồm trong lõi, nhưng email chứng khoán cho người dùng dường như được đặt ở chế độ riêng tư; chỉ người dùng có quyền quản trị viên hoặc chính người dùng mới có thể nhìn thấy.

Tôi muốn cho phép người dùng khác xem trường cơ bản này mà không phải tạo thêm một trường email khác, nơi ai đó phải sao chép thông tin từ người khác chỉ đơn giản là để khả năng hiển thị.

Đây có thể là một thực tế khá dễ dàng / phổ biến, nhưng tôi chưa thể tìm thấy bất cứ điều gì.

Làm cách nào để tôi cho phép người dùng không phải quản trị viên thường xuyên xem email của người dùng khác?


1
Trong 15 năm phát triển cho web, tôi thực sự chưa từng có một lần trên một trang web nơi địa chỉ email của mọi người được công khai. Tôi sẽ không coi đây là một thông lệ chung, có thể là lý do tại sao bạn phải vật lộn để tìm một giải pháp hiện có. Việc thay đổi quyền truy cập của phần tử đó trong bất kỳ ngữ cảnh nào bạn cần có lẽ khá đơn giản với mã, nhưng người dùng nên "nhìn thấy" thông tin này ở đâu? Trên trang hồ sơ với các lĩnh vực khác chẳng hạn?
Clive

Thực tế là email không hiển thị cho người dùng khác chỉ đơn giản là để tránh spam. Ngoài ra, một ý tưởng tồi là hiển thị email được sử dụng để tạo tài khoản. Tôi đồng ý với @Clive tha cho thấy địa chỉ email không phải là một thông lệ như vậy.
kiamlaluno

2
Tôi không muốn làm cho các trường email của người dùng có sẵn cho công chúng. Nhưng, trong 12 năm làm việc với một số bộ phận liên bang, một loạt các tổ chức phi chính phủ và nhiều hệ thống trường học - tôi có thể đảm bảo với bạn rằng việc cung cấp thông tin liên hệ chung của đồng nghiệp, bao gồm email chính của họ là có sẵn người dùng. Nếu trường hợp của bạn là phương pháp tiêu chuẩn để cung cấp email này là một thực thể riêng biệt so với email tài khoản đã đăng ký của người dùng, tôi có thể chấp nhận điều đó - mặc dù có vẻ hơi không cần thiết cho một hệ thống khép kín.
W0LF

Câu trả lời:


1

Tôi đã có một trường hợp sử dụng tương tự. Đây là một giải pháp khác: Tôi đã thêm một trường email mới vào hồ sơ của người dùng và trong một mô-đun tùy chỉnh (Tôi đã làm điều này là Drupal v8.1), sử dụng hook_user_presaveXem Drupal Api :

function MYMODULE_user_presave(User $user){ $user->set('field_profile_email', $user->getEmail()); }

Sau đó, bạn có thể sử dụng trường mới này trong Chế độ xem, ví dụ: trong danh sách liên hệ của bộ phận, như đã được đề cập trong một nhận xét cho câu hỏi. Bạn cũng có thể sử dụng Quyền hạn để tăng cường hơn nữa.

Điều này không có nhược điểm là tạo trường thứ hai, nhưng chức năng tránh phải sao chép thủ công và hiện có sẵn ở bất cứ đâu.


1
điều này sẽ sao chép email sau khi nó được lưu hoặc cập nhật nhưng sẽ không sao chép nó nếu nó đã tồn tại trong trường email, phải không?
usethe23

Chính xác. Điều này sẽ không ảnh hưởng đến bất kỳ người dùng nào đã có trong cơ sở dữ liệu. Để làm điều đó, bạn cần phải lưu lại chúng.
vành đai

6

Một lộ trình bạn có thể thực hiện là cho phép người dùng Xem quyền thông tin người dùng và hiển thị thông tin này trên trang hồ sơ người dùng.

Để làm như vậy, ghi đè user.html.twig trong chủ đề của bạn (sao chép nó từ lõi / mô-đun / người dùng / mẫu / user.html.twig vào thư mục mẫu của chủ đề của bạn), sau đó đưa email vào mẫu thông qua tệp tinemeeme.themehook_preprocess_user() của bạn :

/**
 * Implements hook_preprocess_user()
 */
function mytheme_preprocess_user(&$variables) {
  $variables['mail'] = $variables['user']->getEmail();
}

Trong ví dụ này, bạn sẽ có thể người dùng {{ mail }}chèn biến email vào mẫu hồ sơ người dùng của bạn.


Cảm ơn, điều đó làm việc tuyệt vời! Có cách nào để cho phép trường email hiển thị bằng cách sử dụng chế độ xem không? Thư mục người dùng là cách chính để người dùng tra cứu thông tin liên lạc.
W0LF

1
Cách giải quyết tương đương cho các lượt xem sẽ là một cái gì đó giống như hook_pre process_view_view_field để đưa email người dùng vào trường lượt xem của bạn.
Shawn Conn

1
$ biến ['người dùng'] -> getEmail (); Điều này chỉ trả về email người dùng hiện đang đăng nhập.
tasqyn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.