Consenti l'adesione automatica ai gruppi in base al sottodominio

Continuando a discussão de Adicionar automaticamente usuários a um grupo com base em parte do domínio de e-mail:

Proposta

Atualmente, a configuração de associação de grupo “Usuários que se registram com um domínio de e-mail que corresponde exatamente a um nesta lista serão adicionados automaticamente a este grupo” – onde o administrador deseja corresponder a example.com – corresponde apenas a domínios de segundo nível, como email@example.com.

Proponho que isso seja alterado para corresponder também a subdomínios, por exemplo, email@sub.example.com.

Razão/benefícios

  1. Não seria viável para mim digitar manualmente os subdomínios de dois domínios relacionados ao governo em particular: cada um tem centenas de subdomínios, que mudam constantemente, e a lista completa não está publicamente disponível.

  2. Proporcionaria consistência com email_domains_whitelist, como observado por @sam em Automatic registration domain wild card - #3 by sam

Sim, há uma inconsistência interna, nossa associação automática de grupo é baseada em uma correspondência de domínio estrita por:

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

Nosso correspondente para email_domains_whitelist usa esta correspondência

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

Acho que faz sentido tornar isso coerente e consistente.

@techAPJ você pode ajustar a regex do grupo… com cuidado e garantir que seja testada para que também permita subdomínios.

Soluções propostas

Isso é possível por uma pequena alteração em pattern = \"@(#{domains.gsub('.', '\\.')})$\" em discourse/discourse/blob/20de49c8722f8e50e93732702a8d06570376edcd/app/models/group.rb#L1017

  1. Mudar isso para pattern = \"@.*(#{domains.gsub('.', '\\.')})$\" funcionou para mim quando testei no meu fórum.

  2. Imagino que pattern = \"@(.+\\\\.)?(#{domains.gsub('.', '\\.')})$\" (baseado em email_domains_whitelist) também funcionaria, mas só notei isso depois e não testei. Não entendo por que não é (.+\\.)?, mas talvez o \\\\ seja uma coisa do Ruby.

Uma alternativa (se você estivesse preocupado com usuários que atualmente pretendem excluir subdomínios da associação automática) seria permitir curingas, por exemplo, digitar *.domain.com para associação automática de grupo.

Obrigado

Obrigado por considerar esta solicitação.

6 Mi Piace

Per comodità di riferimento, e forse per far sembrare questa richiesta di funzionalità più popolare dei suoi soli quattro “mi piace”, ecco altre due volte in cui questa funzionalità è stata richiesta. La prima quattro anni fa e la seconda il mese scorso.

2 Mi Piace