web-dev-qa-db-ja.com

通常の管理者以外のユーザーが他のユーザーのメールを表示できるようにするにはどうすればよいですか?

メールはコアに含まれるフィールドになりましたが、ユーザー向けのストックメールは非公開に設定されているようです。管理者権限を持つユーザーまたはユーザー自身のみが表示できます。

他のユーザーがこの基本的なフィールドを表示できるようにしたいのですが、誰かが他の情報を他のユーザーからコピーして、単に表示できるようにするための別の電子メールフィールドを作成する必要はありません。

これはかなり簡単で一般的な方法ですが、まだ何も見つかりません。

通常の管理者以外のユーザーが他のユーザーのメールを表示できるようにするにはどうすればよいですか?

7
W0LF

同様のユースケースがありました。別の解決策は次のとおりです。ユーザーのプロファイルに新しいメールフィールドを追加し、カスタムモジュールでこれを行いました(これはDrupal v8.1)です)、_hook_user_presave_ を参照してください= Drupal API

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

次に、質問へのコメントで述べたように、この新しいフィールドをビューの、たとえば部門の連絡先リストで使用できます。 フィールド権限 を使用して、これをさらに拡張することもできます。

これには2番目のフィールドを作成することの欠点がありますが、この関数は手動でコピーする必要がなく、どこからでも使用できます。

1
beltouche

あなたが取ることができる1つのルートは、ユーザーにユーザー情報の表示権限を許可し、この情報をユーザープロファイルページに表示することです。

これを行うには、テーマのser.html.twigをオーバーライドします(core/modules/user/templates/user.html.twigをテーマのテンプレートディレクトリに追加します) hook_preprocess_user() を介してテンプレートにメールを挿入します=mytheme.themeファイル内:

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

この例では、ユーザー{{ mail }}を使用して、email変数をユーザープロファイルテンプレートに挿入します。

6
Shawn Conn

他のユーザーのメールアドレスを表示する権限を追加するD8 Vore機能リクエストがあります: ユーザーのメールフィールドを表示する新しい権限を追加[#2799049]\| Drupal.org

0
geek-merlin