サブドメインに基づく自動グループメンバーシップを許可する

Automatically add users to group based on part of email domain からの議論の続き:

提案

現在、グループメンバーシップ設定の「このリストのいずれかのドメインと完全に一致するメールアドレスで登録したユーザーは、このグループに自動的に追加されます」は、管理者が example.com に一致させたい場合、email@example.com のようなセカンドレベルドメインにしか一致しません。

これを、email@sub.example.com のようなサブドメインにも一致するように変更することを提案します。

理由/メリット

  1. 特に2つの政府関連ドメインでは、サブドメインを手動で入力することは現実的ではありません。それぞれ数百のサブドメインがあり、それらは常に変更されており、完全なリストは公開されていません。

  2. @samAutomatic registration domain wild card - #3 by sam で指摘したように、email_domains_whitelist との一貫性を提供します。

    はい、内部的に一貫性がありません。自動グループメンバーシップは、次に基づいて厳密なドメイン一致に基づいています。

    discourse/app/jobs/regular/automatic_group_membership.rb at 40546af21746d469e39dfdcc9ca48987fef6cf3c · discourse/discourse · GitHub

    email_domains_whitelist のための私たちのマッチャーは、この一致を使用します

    discourse/lib/validators/email_validator.rb at 40546af21746d469e39dfdcc9ca48987fef6cf3c · discourse/discourse · GitHub

    これを首尾一貫させ、整合性を保つのが理にかなっていると思います。

    @techAPJ サブドメインも許可されるように、グループ正規表現を…慎重に調整し、テストしてください。

提案される解決策

これは、discourse/discourse/blob/20de49c8722f8e50e93732702a8d06570376edcd/app/models/group.rb#L1017pattern = \"@(#{domains.gsub('.', '\\.')})$\" をわずかに変更することで可能です。

  1. これを pattern = \"@.*(#{domains.gsub('.', '\\.')})$\" に変更すると、私のフォーラムでテストしたときに機能しました。

  2. pattern = \"@(.+\\\\.)?(#{domains.gsub('.', '\\.')})$\" (email_domains_whitelist に基づく) も機能すると思いますが、後で気づいただけでテストしていません。なぜ (.+\\.)? ではないのか理解できませんが、おそらく \\\\ は Ruby の機能です。

代替案(現在サブドメインを自動メンバーシップから除外することを意図しているユーザーを懸念している場合)は、ワイルドカードを許可することです。たとえば、自動グループメンバーシップのために *.domain.com を入力することです。

感謝

このリクエストをご検討いただきありがとうございます。

「いいね!」 6

参照のしやすさのため、そしてこの機能リクエストが単なる4つの「いいね!」よりも人気があるように見せるために、この機能がリクエストされた他の2つの例を以下に示します。最初のものは4年前、2番目のものはわずか先月でした。

「いいね!」 2