Permitir membresía automática de grupo basada en subdominio

Continuando la discusión de Agregar automáticamente usuarios a un grupo según parte del dominio de correo electrónico:

Propuesta

En este momento, la configuración de membresía de grupo “Los usuarios que se registran con un dominio de correo electrónico que coincide exactamente con uno de esta lista se agregarán automáticamente a este grupo” – donde el administrador quiere que coincida con example.com – solo coincide con dominios de segundo nivel como email@example.com.

Propongo que esto también se modifique para que coincida con subdominios, por ejemplo, email@sub.example.com.

Razón/beneficios

  1. No sería factible para mí escribir manualmente los subdominios de dos dominios relacionados con el gobierno en particular: cada uno tiene cientos de subdominios, que cambian constantemente, y la lista completa no está disponible públicamente.

  2. Proporcionaría coherencia con email_domains_whitelist, como señaló @sam en Automatic registration domain wild card - #3 by sam

Sí, hay una inconsistencia interna, nuestra membresía automática de grupo se basa en una coincidencia estricta de dominio según:

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

Nuestro comparador para email_domains_whitelist usa esta coincidencia

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

Creo que tiene sentido hacer esto coherente y consistente.

@techAPJ ¿puedes ajustar la expresión regular del grupo… con cuidado y asegurarte de que se pruebe para que también permita subdominios?

Soluciones propuestas

Esto es posible mediante una pequeña modificación de pattern = \"@(#{domains.gsub('.', '\\.')})$\" en discourse/discourse/blob/20de49c8722f8e50e93732702a8d06570376edcd/app/models/group.rb#L1017

  1. Cambiar esto a pattern = \"@.*(#{domains.gsub('.', '\\.')})$\" funcionó para mí cuando lo probé en mi foro.

  2. Me imagino que pattern = \"@(.+\\\\.)?(#{domains.gsub('.', '\\.')})$\" (basado en email_domains_whitelist) también funcionaría, pero solo lo noté más tarde y no lo he probado. No entiendo por qué no es (.+\\.)?, pero tal vez el \\\\ sea algo de Ruby.

Una alternativa (si te preocupara que los usuarios que actualmente pretenden excluir subdominios de la membresía automática) sería permitir comodines, por ejemplo, escribir *.domain.com para la membresía automática en grupos.

Gracias

Gracias por considerar esta solicitud.

6 Me gusta

Solo como referencia, y quizás para que esta solicitud de función parezca más popular que sus meros cuatro “me gusta”, aquí hay otras dos ocasiones en las que se ha solicitado esta función. La primera fue hace cuatro años y la segunda el mes pasado.

2 Me gusta