Wie erlaube ich regulären Nicht-Administrator-Benutzern, die E-Mails anderer Benutzer anzuzeigen?

8

E-Mail ist jetzt ein im Kern enthaltenes Feld, aber die Standard-E-Mail für Benutzer scheint auf privat gesetzt zu sein. Nur Benutzer mit Administratorrechten oder der Benutzer selbst können sehen.

Ich möchte anderen Benutzern erlauben, dieses grundlegende Feld zu sehen, ohne ein weiteres E-Mail-Feld erstellen zu müssen, in das jemand die Informationen von den anderen kopieren muss, damit sie sichtbar sind.

Dies sollte eine ziemlich einfache / übliche Praxis sein, aber ich kann noch nichts finden.

Wie erlaube ich regulären Nicht-Administrator-Benutzern, die E-Mails anderer Benutzer anzuzeigen?

W0LF
quelle
1
In 15 Jahren der Entwicklung für das Web war ich buchstäblich noch nie auf einer Website, auf der die E-Mail-Adressen von Personen veröffentlicht wurden. Ich würde dies überhaupt nicht als gängige Praxis betrachten. Vielleicht haben Sie deshalb Schwierigkeiten, eine bestehende Lösung zu finden. Das Ändern des Zugriffs auf dieses Element in den von Ihnen benötigten Kontexten ist mit Code wahrscheinlich recht einfach. Aber wo sollten Benutzer diese Informationen "sehen"? Auf der Profilseite mit anderen Feldern zum Beispiel?
Clive
Die Tatsache, dass die E-Mail für andere Benutzer nicht sichtbar ist, dient lediglich dazu, Spam zu vermeiden. Es ist auch eine schlechte Idee, die E-Mail anzuzeigen, die zum Erstellen eines Kontos verwendet wurde. Ich bin mit @Clive einverstanden, dass das Anzeigen der E-Mail-Adresse nicht so üblich ist.
Kiamlaluno
2
Ich möchte die E-Mail-Felder der Benutzer nicht der Öffentlichkeit zugänglich machen. In meinen 12 Jahren in der Arbeit mit mehreren Bundesabteilungen, einer Vielzahl von NGOs und zahlreichen Schulsystemen kann ich Ihnen jedoch versichern, dass es sehr üblich ist, die allgemeinen Kontaktinformationen Ihrer Kollegen, einschließlich ihrer primären E-Mail-Adresse, anderen Authentifizierten zur Verfügung zu stellen Benutzer. Wenn Ihr Fall ist, dass die Standardmethode für die Bereitstellung dieser E-Mail eine separate Einheit ist als die E-Mail des registrierten Kontos des Benutzers, kann ich das akzeptieren - obwohl dies für ein geschlossenes System etwas unnötig redundant erscheint.
W0LF

Antworten:

1

Ich hatte einen ähnlichen Anwendungsfall. Hier ist eine weitere Lösung: Ich habe den Benutzerprofilen ein neues E-Mail-Feld hinzugefügt und in einem benutzerdefinierten Modul (dies ist Drupal v8.1) die Option " hook_user_presaveSiehe Drupal- API" verwendet :

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

Anschließend können Sie dieses neue Feld in Ansichten verwenden, z. B. in einer Abteilungskontaktliste, wie in einem Kommentar zur Frage erwähnt. Sie können auch Feldberechtigungen verwenden , um dies weiter zu verbessern.

Dies hat den Nachteil, dass ein zweites Feld erstellt wird, aber die Funktion vermeidet das manuelle Kopieren und ist jetzt überall verfügbar.

Beltouche
quelle
1
Dadurch wird die E-Mail kopiert, sobald sie gespeichert oder aktualisiert wurde. Sie wird jedoch nicht kopiert, wenn sie bereits im E-Mail-Feld vorhanden ist.
Verwenden Sie den 23.
Richtig. Dies würde keine Benutzer betreffen, die sich bereits in der Datenbank befinden. Dazu müssten Sie sie erneut speichern.
Beltouche
6

Eine Möglichkeit besteht darin, Benutzern die Berechtigung zum Anzeigen von Benutzerinformationen zu erteilen und diese Informationen auf der Benutzerprofilseite anzuzeigen.

Überschreiben Sie dazu user.html.twig in Ihrem Thema (kopieren Sie es von core / modules / user / templates / user.html.twig in das Vorlagenverzeichnis Ihres Themas) und fügen Sie die E-Mail über hook_preprocess_user()Ihre Datei mytheme.theme in die Vorlage ein ::

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

In diesem Beispiel können Benutzer {{ mail }}die E-Mail-Variable in Ihre Benutzerprofilvorlage einfügen.

Shawn Conn
quelle
Danke, das funktioniert super! Gibt es eine Möglichkeit, das E-Mail-Feld mithilfe von Ansichten anzuzeigen? Das Benutzerverzeichnis ist die primäre Methode, mit der Benutzer Kontaktinformationen nachschlagen.
W0LF
1
Die entsprechende Problemumgehung für Ansichten wäre etwa hook_preprocess_views_view_field , um die Benutzer-E-Mail in Ihr Ansichtsfeld einzufügen .
Shawn Conn
1
$ variables ['user'] -> getEmail (); Dies gibt nur aktuell angemeldete Benutzer-E-Mails zurück.
Tasqyn