Skip to content

feat/both/participant-order-login : 버추얼런 주문자 로그인과 마이페이지 주문 관리 #133

Closed

Description

@ysw789

📌 이슈 제목

feat/both/participant-order-login : 버추얼런 주문자 로그인과 마이페이지 주문 관리

✨ 기능 설명

  • #130에서 나눈 두 번째 작업이다. feat/both/participant-order-management : 버추얼런 주문 관리를 로그인한 주문자 전용으로 전환 #130(PR [feat/user] : 공개 조회·관리를 닫는 대회 설정과 공개 API 차단 #131)은 대회 설정 public_registration_access_enabled로 공개 조회·관리를 닫는 부분만 했다.
  • 이 이슈에서는 로그인한 주문자가 마이페이지에서 자기 주문을 모두 보고 관리하고 추가 주문까지 하게 한다.
  • 토큰 주체를 신청 id에서 주문자 키(registration.orderer_key)로 바꿔 한 사람의 주문 여러 건을 묶는다.
  • 로그인 뒤 추가 주문(POST /v1/participant/registrations)을 넣는다. #126은 같은 명의의 두 번째 공개 신청을 409로 거절만 하므로, 이 API 없이 중복 신청 허용을 켜면 이미 산 사람이 더 살 방법이 없다.
  • 티켓사 구매자(외부 결제)는 로그인 대상이 아니다.
  • 범위 밖: 로그인 시도 제한, 서버 비밀번호 최소 길이, 비밀번호 변경 뒤 access 무효화, 관리자 비밀번호 초기화·기본정보 수정의 주문자 단위 반영

✅ 세부 작업 항목

  • DDL(로컬·테스트 DB): registration.orderer_key(VARCHAR 40 NULL)·기존 개인 신청 채움(외부 결제 제외, 자기 id)·인덱스 (orderer_key), common-entity RegistrationBase에 매핑(두 앱 컴파일)
  • 로그인·재발급: 토큰 주체와 Redis refresh 키를 orderer_key로 변경, 후보에 취소 주문 포함·외부 결제 제외, 공개 허용 설정이 1인 대회는 거절(PARTICIPANT_LOGIN_NOT_AVAILABLE), 응답에 orderCount 추가(registrationId는 프론트가 옮길 때까지 유지)
  • 주문 소유 확인을 한 곳(ParticipantOrderAccess)에 모은다: 경로의 registrationId가 토큰 주문자의 주문인지 잠금 뒤 다시 읽은 행으로 대조, me 경로는 살아 있는 주문이 하나일 때만
  • 마이페이지 조회: GET /v1/participant/registrations, GET /v1/participant/registrations/{registrationId} (items[].entries[], 배번, 진행 중 상향, 수정·환불 마감 시각, 취소 주문 포함)
  • 마이페이지 수정: PATCH .../{registrationId}(주소), PATCH .../{registrationId}/entries(받는 사람, 기존 me/entries 서비스 재사용), PATCH /v1/participant/orderer(주문자 정보 일괄), PATCH /v1/participant/orderer/password(일괄, 취소 주문 포함, 바꾼 뒤 refresh 삭제)
  • 마이페이지 취소·재결제: POST .../{registrationId}/cancellation, POST .../{registrationId}/payments/{paymentId}/retry. 본인확인과 업무 처리를 갈라 공개 진입점과 참가자 진입점이 같은 처리부를 부르게 한다
  • 추가 주문: POST /v1/participant/registrations. 신원·비밀번호 해시·orderer_key를 기존 주문에서 복사하고 register(eventId, request, additionalOrder=true)를 부른다
  • 상향 경로를 .../{registrationId}/upgrade로 옮긴다. me/upgrade·me/entries는 프론트가 옮길 때까지 함께 둔다
  • 단위·DB 테스트: 남의 주문 거절, 로그인(주문 여러 건·취소 주문만·설정별 거절), 추가 주문의 값 복사, 일괄 변경, 채움 SQL 뒤 기존 신청 로그인, 기존 상향 회귀(policyDbTest·capacityDbTest)
  • 프론트 연동 안내: 공개 조회 5곳·수정 1곳을 참가자 API로 옮김, localStorage의 비밀번호 저장 삭제, 로그인 응답(orderCount)과 상향 경로 변경, 새 409 오류 코드
  • 프론트 이전이 배포된 뒤 버추얼런 대회의 공개 허용 설정을 0으로 바꾼다(SQL). 그다음 duplicate_registration_allowed를 켠다
  • 정리: me/upgrade·me/entries와 로그인 응답의 registrationId 삭제

🧩 참고 자료

Activity

  1. self-assigned this
    on Nov 6, 2026
  2. added 4 commits that reference this issue on Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

feat새로운 기능 추가

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions