web-dev-qa-db-fra.com

Comment autoriser les utilisateurs réguliers non administrateurs à consulter les e-mails des autres utilisateurs?

L'e-mail est désormais un champ inclus dans le noyau, mais l'e-mail stock pour les utilisateurs semble être défini sur privé; seuls les utilisateurs disposant de privilèges d'administrateur ou l'utilisateur lui-même peuvent le voir.

Je voudrais permettre aux autres utilisateurs de voir ce champ de base, sans avoir à créer un autre champ de courrier électronique où quelqu'un doit copier les informations les uns des autres simplement pour qu'il soit visible.

Cela devrait être une pratique assez facile/courante, mais je ne trouve encore rien.

Comment autoriser les utilisateurs réguliers non administrateurs à consulter les e-mails des autres utilisateurs?

7
W0LF

J'ai eu un cas d'utilisation similaire. Voici une autre solution: j'ai ajouté un nouveau champ de messagerie aux profils des utilisateurs, et dans un module personnalisé (je l'ai fait Drupal v8.1), utilisez hook_user_presaveVoir Drupal Api :

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

Ensuite, vous pouvez utiliser ce nouveau champ dans les vues, par exemple, dans une liste de contacts de service, comme cela a été mentionné dans un commentaire à la question. Vous pouvez également utiliser Autorisations de champ pour améliorer encore cela.

Cela a l'inconvénient de créer un deuxième champ, mais la fonction évite d'avoir à le copier manuellement, et il est maintenant disponible partout.

1
beltouche

Un itinéraire que vous pouvez emprunter consiste à accorder aux utilisateurs l'autorisation Afficher les informations utilisateur et à afficher ces informations sur la page de profil utilisateur.

Pour ce faire, remplacez ser.html.twig dans votre thème (copiez-le depuis core/modules/user/templates/user.html.twig dans le répertoire des modèles de votre thème) puis injectez l'e-mail dans le modèle via hook_preprocess_user() = dans votre fichier mytheme.theme :

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

Dans cet exemple, vous pourrez utiliser {{ mail }} pour insérer la variable e-mail dans votre modèle de profil utilisateur.

6
Shawn Conn

Il existe une demande de fonctionnalité D8 Vore pour ajouter une autorisation de voir l'adresse e-mail des autres utilisateurs: Ajouter une nouvelle autorisation pour afficher le champ de messagerie de l'utilisateur [# 2799049]\| Drupal.org

0
geek-merlin