Permettre l'adhésion automatique au groupe basée sur le sous-domaine

Continuant la discussion de Ajouter automatiquement des utilisateurs à un groupe en fonction d’une partie du domaine de messagerie :

Proposition

Actuellement, le paramètre d’appartenance au groupe « Les utilisateurs qui s’inscrivent avec un domaine de messagerie qui correspond exactement à l’un de cette liste seront automatiquement ajoutés à ce groupe » – où l’administrateur souhaite faire correspondre example.com – ne correspond qu’aux domaines de second niveau comme email@example.com.

Je propose que cela soit modifié pour correspondre également aux sous-domaines, par exemple email@sub.example.com.

Raison/avantages

  1. Il ne serait pas possible pour moi de taper manuellement les sous-domaines de deux domaines liés au gouvernement en particulier : chacun a des centaines de sous-domaines, qui changent constamment, et la liste complète n’est pas disponible publiquement.

  2. Cela assurerait la cohérence avec email_domains_whitelist, comme l’a noté @sam dans Automatic registration domain wild card - #3 by sam :

Oui, il y a une incohérence interne, notre appartenance automatique au groupe est basée sur une correspondance de domaine stricte par :

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

Notre correspondance pour email_domains_whitelist utilise cette correspondance

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

Je pense qu’il est logique de rendre cela cohérent et constant.

@techAPJ pouvez-vous ajuster l’expression régulière du groupe… attentivement et vous assurer qu’elle est testée afin qu’elle autorise également les sous-domaines.

Solutions proposées

Ceci est possible par un léger amendement à pattern = \"@(#{domains.gsub('.', '\\.')})$\" à discourse/discourse/blob/20de49c8722f8e50e93732702a8d06570376edcd/app/models/group.rb#L1017

  1. Changer ceci en pattern = \"@.*(#{domains.gsub('.', '\\.')})$\" a fonctionné pour moi lorsque je l’ai testé sur mon forum.

  2. J’imagine que pattern = \"@(.+\\\\.)?(#{domains.gsub('.', '\\.')})$\" (basé sur email_domains_whitelist) fonctionnerait également, mais je ne l’ai remarqué que plus tard et je ne l’ai pas testé. Je ne comprends pas pourquoi ce n’est pas (.+\\.)?, mais peut-être que le \\\\ est une chose Ruby.

Une alternative (si vous craigniez les utilisateurs qui ont actuellement l’intention d’exclure les sous-domaines de l’adhésion automatique) serait d’autoriser les jokers, par exemple pour taper *.domain.com pour l’adhésion automatique au groupe.

Remerciements

Merci de prendre en compte cette demande.

6 « J'aime »

Pour plus de facilité, et peut-être pour rendre cette demande de fonctionnalité plus populaire que ses quatre mentions « J’aime », voici deux autres fois où cette fonctionnalité a été demandée. La première remonte à quatre ans, et la seconde au mois dernier.

2 « J'aime »