Files
ITOSMPiano-BachToBasics/docs/LIBRARY-AUTH-KO.md
T
이창현 a41da4029f 회원과 곡 보관함 기능을 추가한다
회원 가입과 로그인 및 등급별 접근과 공개 범위를 구현했다.`nMIDI 업로드와 검색 및 같은 곡의 버전 묶음을 추가했다.`n비밀번호 변경과 회원 탈퇴 및 관리자 회원 관리를 포함했다.`n직접 만든 공개 샘플 MIDI 네 곡과 운영 문서를 추가했다.
2026-10-03 10:12:17 +09:00

4.5 KiB

Bach to Basics 회원과 곡 보관함 운영

기능 범위

Bach to Basics의 기존 파일 가져오기 기능을 유지하면서 서버 곡 보관함을 추가했다. 비회원은 전체 공개 MIDI를 바로 연주할 수 있다. 회원은 MIDI를 올리고 공개 범위와 회원 등급을 지정할 수 있다.

공개 범위는 다음 네 단계다.

공개 범위 접근 대상
전체 공개 비회원 포함 모든 사용자
회원 공개 지정한 최소 등급 이상의 로그인 회원
지정 회원 공유 최소 등급을 만족하며 업로더가 지정한 회원
나만 보기 업로더 본인과 관리자

회원 등급은 일반 회원 1단계와 우수 회원 2단계 및 지도 회원 3단계와 관리자 4단계로 구성한다. 역할은 회원과 운영자 및 관리자로 구분한다. 등급은 곡 접근 범위에 사용하며 역할은 운영 권한에 사용한다.

회원 기능

  • 회원 가입과 로그인 및 로그아웃
  • 현재 비밀번호를 확인한 뒤 비밀번호 변경
  • 모든 세션을 종료한 뒤 새 비밀번호로 다시 로그인
  • 비밀번호와 확인 문구를 입력한 회원 탈퇴
  • 탈퇴 시 본인이 올린 MIDI와 공유 정보 제거
  • 관리자 화면에서 회원 등급과 역할 및 이용 상태 변경

비밀번호는 scrypt로 해시한다. 원문은 DB와 로그에 저장하지 않는다. 로그인 세션 토큰도 SHA-256 해시만 DB에 보관한다. 상태 변경 요청에는 로그인 세션과 CSRF 확인 값을 함께 검사한다.

MIDI 업로드

  • 허용 확장자: .mid, .midi
  • 최대 파일 크기: 10MB
  • 회원별 최대 파일 수: 100개
  • 회원별 최대 보관 용량: 500MB
  • 파일 이름에서 디렉터리 요소 제거
  • MThd 헤더 확인
  • 임의 저장 이름과 SHA-256 해시 기록
  • 곡 제목과 아티스트 및 설명
  • 난이도와 장르 및 편곡 형태
  • 최대 12개 검색 태그
  • 전체 공개 곡은 등급 제한 사용 불가

저장 위치는 /home/syskiller/piano/bach-to-basics/data다. SQLite DB와 MIDI 파일은 Git에 넣지 않는다. DB 파일 권한은 600이며 데이터 디렉터리는 750으로 유지한다.

검색과 버전 묶음

곡명과 아티스트 및 설명과 태그를 함께 검색한다. 장르와 난이도 및 편곡 형태와 개별 태그로 결과를 좁힐 수 있다. 같은 아티스트와 같은 제목은 한 묶음으로 표시한다. 묶음 안에서 멜로디와 반주 및 피아노 독주와 듀엣과 연습 패턴을 선택한다.

공개 샘플

상업 가요를 복제하지 않고 직접 만든 다음 연습곡을 전체 공개 샘플로 제공한다.

  • 첫눈이 내리는 밤: 입문 멜로디
  • 첫눈이 내리는 밤: 중급 양손 반주
  • 파란 바람 산책: 쉬운 가요풍 멜로디
  • 아침의 작은 왈츠: 중급 피아노 독주

같은 제목의 난이도와 편곡 형태를 한 묶음에서 고르는 동작은 첫눈이 내리는 밤의 두 버전으로 확인한다.

초기 관리자

초기 관리자 아이디는 Compose 환경 변수로 지정한다. 비밀번호는 secrets/library_admin_password에서만 읽는다. DB에 같은 아이디가 없을 때만 최초 관리자를 생성한다. 컨테이너 재시작 때 기존 비밀번호를 덮어쓰지 않는다.

백업과 복구

다음 항목을 같은 시점에 백업한다.

  • data/library.sqlite3
  • data/midi
  • secrets/library_admin_password
  • 소스 저장소 Git 번들

비밀 파일은 일반 소스 백업과 분리하고 권한 600을 유지한다. SQLite를 복사하기 전에는 백엔드의 쓰기 요청을 잠시 막거나 SQLite 온라인 백업 명령을 사용한다. 단순 파일 복사 중 DB가 변경되면 일관된 백업이 아닐 수 있다.

운영 확인

배포 후 다음을 검사한다.

  1. 비회원에게 공개 샘플만 표시되는지 확인한다.
  2. 회원 가입과 로그인 및 로그아웃을 확인한다.
  3. 비공개 곡이 다른 회원과 비회원에게 보이지 않는지 확인한다.
  4. 회원 공개와 지정 공유 및 최소 등급 제한을 확인한다.
  5. MIDI 업로드와 한글 제목 및 태그 검색을 확인한다.
  6. 같은 제목의 멜로디와 반주 버전을 각각 불러온다.
  7. 비밀번호 변경 후 기존 세션이 끝나는지 확인한다.
  8. 시험 회원 탈퇴 후 계정과 업로드가 제거되는지 확인한다.
  9. 모바일 화면에서 검색과 업로드 및 계정 화면이 가로로 넘치지 않는지 확인한다.