Skip to content

[feat] 로그인 후 본인인증 및 기본 프로필 설정 플로우 #131

@Chuseok22

Description

@Chuseok22

📌 구현할 기능 설명

Team-TicketMate/ticketmate-server#538

<백엔드 변경사항>

  • 회원정보 수정 엔드포인트 추가
  • 로그인 시 "본인인증여부", "기본프로필 설정여부" 쿠키 반환

회원정보 수정 엔드포인트

      이 API는 인증된 사용자만 사용 가능합니다
      
      **HTTP**
      - `PATCH /api/member`
      - `Content-Type: multipart/form-data`
      
      ### 요청 파라미터 (multipart/form-data)
      - `nickname` (text, optional): 변경할 닉네임. 비어있거나 공백만 있는 경우 무시됩니다.
      - `profileImg` (file, optional): 변경할 프로필 이미지 파일(바이너리). 파일이 전달되면 기존 이미지가 삭제된 후 새 파일로 교체됩니다.
      - `introduction` (text, optional): 변경할 한줄 소개. 비어있거나 공백만 있는 경우 무시됩니다. **최대 20자**.
      
      > 서버 동작 요약
      > - 닉네임: 값이 비어있지 않을 때만 `member.nickname` 갱신  
      > - 프로필 이미지: 파일이 전달되면 기존 파일 삭제 → 새 파일 업로드 → 업로드 결과의 `storedPath`로 `member.profileImgStoredPath` 갱신  
      > - 한줄 소개: 값이 비어있지 않을 때만 `member.introduction` 갱신  
      > - **제공되지 않은 필드는 변경되지 않습니다.**
      
      ### 응답 데이터
      - 본문 없음 (`ResponseEntity<Void>`)
      
      ### 사용 방법
      1. **변경하려는 필드만** multipart 폼으로 전송합니다.
      2. `nickname`, `introduction`이 빈 문자열("")이거나 공백만 있는 경우 서버가 **변경을 무시**합니다.
      3. `profileImg`가 포함되면 **기존 프로필 이미지는 삭제**된 뒤 새 파일로 교체됩니다.
      
      ### 유의 사항
      - `introduction`은 DB 스키마 기준 **최대 20자**입니다.
      - 부분 업데이트(Partial Update) 방식으로, 누락된 필드는 기존 값이 유지됩니다.
      
      ### 요청 예시
      **1) 파일 포함(닉네임+한줄소개+이미지 교체)**
      ```bash
      curl -X PATCH "https://{host}/api/member" 
        -H "Content-Type: multipart/form-data" 
        -F "nickname=ticketmate_fan" 
        -F "introduction=안녕하세요!" 
        -F "profileImg=@/path/to/new-profile.jpg"
      ```
      
      **2) 파일 없이 텍스트만 수정(닉네임만 변경)**
      ```bash
      curl -X PATCH "https://{host}/api/member" 
        -H "Content-Type: multipart/form-data" 
        -F "nickname=ticketmate_fan"
      ```

쿠키 반환

  • 소셜 로그인 이후 "본인인증 여부" 와 "기본 프로필 설정여부"가 포함된 쿠키가 반환됩니다
  • 본인인증 여부 쿠키: phoneNumberVerified
  • 기본 프로필 설정 여부 쿠키: initialProfileSetKey
  • 쿠키는 httpOnly = true가 되어있어 js에서 핸들링이 불가능합니다
  • 로그인 이후 해당 값에 따라 분기처리하시면 됩니다

Metadata

Metadata

Assignees

Labels

작업 전작업 시작 전 준비상태

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions