Discourse 회원 신청

:information_source: 요약 Discourse Member Application 플러그인은 회원이 Discourse 커뮤니티에 가입하기 전에 구조화된 지원 절차를 실행할 수 있도록 해줍니다.
:hammer_and_wrench: 저장소 링크 R23DPrinting-group / discourse-member-application · GitLab
:open_book: 설치 가이드 Discourse에 플러그인 설치하는 방법

discourse-member-application — 비공개 커뮤니티를 위한 사전 초대 지원 시스템

discourse-member-application 플러그인은 회원이 Discourse 커뮤니티에 가입하기 전에 구조화된 지원 절차를 실행할 수 있도록 해줍니다. 지원자는 /apply에서 사용자 정의 가능한 공개 양식을 작성하고, 관리자는 제출 내용을 검토하여 승인하거나 거절하며, 승인된 지원자에게는 자동으로 비공개 초대 링크가 발송됩니다.

:link: GitLab: R23DPrinting-group / discourse-member-application · GitLab


개발 배경

저는 Discourse의 초대 전용 모드를 사용하는 비공개 커뮤니티를 운영하고 있습니다. 우리는 회원 가입 지원을 수동으로 관리하고 있었습니다 — Google 폼, 스프레드시트, 그리고 초대 링크를 수동으로 복사하여 붙여넣는 방식이었죠. 작동은 했지만, 확장성이 부족했고 커뮤니티 자체와 단절된 느낌이 들었습니다.

사전 초대 지원을 처리할 수 있는 Discourse 플러그인을 찾아보았지만, 적합한 것을 찾지 못했습니다. 그래서 이 플러그인을 만들었습니다.


데모


기능

:clipboard: 사용자 정의 가능한 지원 양식
양식은 관리자 패널의 필드(Fields) 탭을 통해 완전히 구성할 수 있으며, 코딩이 필요하지 않습니다. 지원되는 필드 유형: 텍스트, 텍스트 영역, 예/아니오, 라디오 버튼, 체크박스 그룹, 체크박스. 필드는 라벨, 힌트, 필수/선택, 활성화/비활성화, 그리고 조건부 가시성(다른 필드가 특정 값을 가질 때만 필드 표시)을 지원합니다.

:magnifying_glass_tilted_left: 관리자 대시보드
전용 플러그인 페이지에서 모든 지원 내용을 검토하고 관리할 수 있습니다. 상태(대기 중 / 승인됨 / 거절됨 / 사용됨)로 필터링하고, 이메일 또는 사용자명으로 검색하며, 긴 목록을 페이지네이션으로 탐색할 수 있습니다. 지원 내용 전체를 보고, 비공개 관리자 노트를 추가하고, 개별 또는 일괄로 승인하거나 거절할 수 있습니다.

:white_check_mark: 승인 플로우
지원을 승인하면 일회용 Discourse 초대가 생성되어 지원자에게 이메일로 발송됩니다. 거절 시에는 선택적인 피드백과 함께 사용자 정의 가능한 거절 이메일이 발송됩니다. 지원자가 초대를 사용하고 계정을 만들면 지원 상태가 자동으로 "사용됨(Redeemed)"으로 업데이트됩니다. 승인된 회원은 선택적으로 Discourse 그룹에 자동으로 추가될 수 있습니다.

:bar_chart: 분석
분석(Analytics) 탭에는 요약 통계(총 지원 수, 승인율, 평균 검토 시간), 제출 건수와 승인 건수의 12주 추이 차트, 그리고 제출 → 승인 → 사용으로 이어지는 전환 퍼널이 표시됩니다.

:bell: 관리자 알림
새로운 지원이 제출되면 설정된 사용자명(또는 비워두면 모든 관리자)에게 비공개 메시지가 발송됩니다.

:artist_palette: 사용자 정의 가능한 UX

  • 양식 상단의 소개 텍스트 (마크다운 지원)
  • 제출 후 /apply/success에 표시되는 성공 페이지 및 사용자 정의 가능한 메시지 (마크다운 지원)
  • 로그인 페이지 및 로그인 필수 홈 페이지의 “가입 지원하기” 버튼 (토글 가능)
  • 지원 만료 — 설정된 일수 후 대기 중인 지원을 자동 거절

:e_mail: 편집 가능한 이메일 템플릿
제출 확인 이메일과 거절 이메일 모두 Admin → Customize → Email Templates을 통해 편집할 수 있으며, 코드 수정이 필요하지 않습니다.

:locked: 보안
레이트 리미팅(시간당 IP당 5회 제출), 중복 감지(대기 중/승인된 이메일 또는 사용자명 재제출 차단, 이미 등록된 이메일/사용자명 차단), 그리고 일회용 초대.


설정

설치

/var/discourse/containers/app.yml 파일에 다음 내용을 추가하세요:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://gitlab.com/r23dprinting-group/discourse-member-application.git

그리고 다시 빌드하세요:

cd /var/discourse && ./launcher rebuild app

양식 설정

설치 후 Admin → Plugins → Member Application → Fields로 이동하여 지원 양식을 구성하세요.

이 플러그인은 다음 기본 필드를 포함하고 있습니다 (모두 편집 또는 삭제 가능):

  1. 원하는 사용자명
  2. 자기소개
  3. 어떻게 우리를 알게 되셨나요?
  4. 현재 다른 유사한 온라인 커뮤니티에 참여하고 계신가요? (예/아니오)
  5. 네, 어떤 곳인가요? (조건부 — 위 항목이 '예’일 때만 표시)
  6. 벤더 공개 사항 (체크박스 그룹)
  7. 정직성 확인 (체크박스 — 시스템 필드, 삭제 불가)

필드 추가(Add field) 버튼을 사용하여 새 필드를 생성하세요. 상하 화살표를 사용하여 순서를 변경하세요. 필드를 조건부로 만들려면 편집하여 “조건부 표시(Show only when)” 섹션에서 상위 필드와 트리거 값을 선택하세요.

워크플로우

  1. 잠재적 회원이 사이트를 방문하고 **가입 지원하기(Apply to Join)**를 클릭합니다 (또는 /apply로 직접 이동)
  2. 양식을 작성하고 제출합니다 — 계정 생성 불필요
  3. 관리자가 비공개 메시지 알림을 받습니다
  4. 관리자가 Admin → Plugins → Member Application → Applications에서 지원을 검토합니다
  5. 관리자가 승인 → 지원자에게 일회용 링크가 포함된 초대 이메일이 발송됩니다
  6. 지원자가 초대를 사용하고 계정을 만들면 지원 상태가 **사용됨(Redeemed)**으로 업데이트됩니다

설정값

이름 설명
member_application_enabled /apply의 지원 양식 활성화 또는 비활성화
member_application_notify_usernames 새 제출 시 PM으로 알림을 받을 사용자명 (쉼표로 구분). 비워두면 모든 관리자에게 알림을 보냅니다.
member_application_invite_group 승인 시 초대에 추가할 그룹 이름 (비워두면 건너뜁니다)
member_application_expiry_days 이 일수 후 대기 중인 지원을 자동 거절 (0 = 없음)
member_application_expiry_notify 지원이 자동 만료될 때 거절 이메일 발송 여부
member_application_show_apply_button 로그인 페이지 및 로그인 필수 홈 페이지에 “가입 지원하기” 버튼 표시 여부
member_application_apply_button_text 가입 지원하기 버튼의 라벨 (기본값: “Apply to Join”)
member_application_intro_text 지원 양식 상단에 표시되는 소개 텍스트. 마크다운 지원. 비워두면 숨겨집니다.
member_application_success_message 제출 후 /apply/success 페이지에 표시되는 메시지. 마크다운 지원.

참고 사항

  • 커뮤니티 무관 — 모든 기본 필드 텍스트는 Fields 탭을 통해 구성 가능
  • Discourse의 login_required / 초대 전용 모드와 호환
  • MIT 라이선스
  • Discourse 2026.3.0에서 테스트됨

GitLab에서 이슈, PR, 기능 요청을 환영합니다.

:link: R23DPrinting-group / discourse-member-application · GitLab

15개의 좋아요

업데이트: 저장소가 GitLab으로 이동했습니다. 위 게시글의 모든 링크가 업데이트되었습니다.

:link: https://gitlab.com/r23dprinting-group/discourse-member-application

2개의 좋아요

파일을 업로드하는 방법이 있나요?

안녕하세요! 현재는 지원되지 않지만, 해당 기능을 추가할 수 있는지 알아볼 수는 있습니다.

2개의 좋아요

저는 사용자가 입력한 특정 필드와 CSV 파일을 비교하여 가입을 허용하는 방법에 대해 고민하고 있습니다. 제 경우, 특정 제조사의 개조 밴 커뮤니티를 위한 Discourse 포럼을 운영하고 있습니다. 판매된 차량과 번호판 정보를 CSV 파일로 받아들이며, 가입 시점에 사용자가 입력한 번호판과 CSV 파일의 번호판을 비교하고 싶습니다.