Skip to content

members.uwksa.ca 설명 (레거시)

이 문서는 members.uwksa.ca 서비스의 현재 구조를 기준으로 정리한 레거시 설명입니다.

주의

운영 구조가 변경될 수 있으므로, 실제 운영 전에 코드와 서버 상태를 함께 확인하세요.


개요

항목
URL members.uwksa.ca
목적 UWKSA 멤버 인증, QR 검증, 멤버십 신청 운영
백엔드 Flask + Authlib(OIDC)
DB SQLite (database.db, database/test-signups.db)
배포 형태 systemd 서비스 (members.uwksa.ca)

핵심 기능

1) 멤버 인증/검증

  • 학교 계정(OIDC) 로그인 후 세션 생성
  • 멤버 여부 확인 후 미가입자는 /join으로 리다이렉트
  • /qr-code에서 짧은 만료 시간(30초) JWT QR 발급
  • /verify에서 QR 토큰 검증 및 사용자 표시

2) 멤버 목록 동기화

  • 소스 파일: database/members.txt
  • 변환: database/txt-to-json.py
  • DB 동기화: database/update-members.py
  • 운영 스크립트: add-member.sh

동기화 특성

현재 동기화 스크립트는 목록에 있는 사용자만 is_member=1로 설정합니다.
목록에서 제거된 사용자의 비활성화(is_member=0)는 자동 처리되지 않습니다.

3) 신청/운영 기능

  • /signup: 신규 신청 폼 제출
  • WatCard 이미지 업로드
  • 이미지 검증(photo processor) 및 저장
  • 결제 안내 확인 체크박스 검증
  • /manage: 운영자 전용 신청 관리 화면
  • MANAGE_ALLOWED_USERNAMES 허용 목록 기반 접근 제어
  • 제출 건 승인/미승인 상태 전환

운영 시 체크 포인트

  • 필수 환경변수: SECRET_KEY, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_DISCOVERY_URL
  • 운영자 페이지 권한: MANAGE_ALLOWED_USERNAMES
  • 서비스 재시작: sudo systemctl restart members.uwksa.ca
  • WatCard 이미지 경로: static/images/WATCards/

관련 파일

  • 앱 엔트리: membership.py, wsgi.py
  • 런타임 설정: config.py
  • 멤버 동기화: add-member.sh, database/txt-to-json.py, database/update-members.py
  • 템플릿: templates/base.html, templates/verify.html, templates/signup.html, templates/manage_signups.html