서브도메인에 기반한 자동 그룹 멤버십 허용

Automatically add users to group based on part of email domain 토론을 이어서 진행합니다:

제안

현재 그룹 멤버십 설정인 “이 목록에 정확히 일치하는 이메일 도메인으로 가입한 사용자는 이 그룹에 자동으로 추가됩니다” – 관리자가 example.com과 일치시키려는 경우 – 는 email@example.com과 같은 2차 도메인만 일치시킵니다.

email@sub.example.com과 같은 서브도메인도 일치하도록 이 설정을 변경할 것을 제안합니다.

이유/혜택

  1. 특히 정부 관련 두 도메인의 서브도메인을 수동으로 입력하는 것은 비현실적입니다: 각 도메인은 수백 개의 서브도메인을 가지고 있으며, 이는 끊임없이 변하고 있고, 전체 목록은 공개되어 있지 않습니다.

  2. @sam이 Automatic 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#L1017의 pattern = "@(#{domains.gsub('.', '\.')})$"에 대한 경미한 수정으로 이것이 가능합니다.

  1. pattern = "@.*(#{domains.gsub('.', '\.')})$"로 변경하면 제 포럼에서 테스트했을 때 작동했습니다.

  2. pattern = "@(.+\\.)?(#{domains.gsub('.', '\.')})$" (email_domains_whitelist 기반)도 작동할 것이라고 상상하지만, 나중에야 그 사실을 알아차렸고 테스트하지는 않았습니다. 왜 (.+\.)?가 아닌지 이해하지 못하지만, 아마도 \\가 Ruby 관련 사항일 것입니다.

대안으로 (현재 서브도메인을 자동 멤버십에서 제외하려는 의도를 가진 사용자가 있을 경우를 우려한다면), 자동 그룹 멤버십을 위해 와일드카드를 허용하는 것입니다. 예를 들어 *.domain.com을 입력하도록 하는 것입니다.

감사

이 요청을 검토해 주셔서 감사합니다.

7개의 좋아요

참고하기 쉽게, 그리고 이 기능 요청이 단순한 좋아요 4개보다 더 인기 있는 것처럼 보이게 하기 위해, 이 기능이 이전에 요청되었던 두 가지 사례를 소개합니다. 첫 번째는 4년 전이고, 두 번째는 지난 달이었습니다.

2개의 좋아요