Skip to content

회원 정보 수정 API 구현 #32

@wooxexn

Description

@wooxexn

1. 구분

  • BackEnd
  • Infra
  • ETC

2. 대분류

  • feat
  • refactor
  • settings
  • etc

3. 작업의 주 내용에 대해서 작성해주세요

회원정보 수정 API 개발 - 선택적 필드 수정 및 보안 검증 강화

4. 세부 작업에 대해서 작성해주세요

회원정보 수정 요청/응답 DTO 구현

  • UserUpdateRequestDto 생성 (선택적 필드 수정 요청 데이터)
  • UserUpdateResponseDto 생성 (수정 완료 응답 데이터)
  • 유효성 검증 어노테이션 적용 (username, nickname, phoneNumber, businessNumber, newPassword)
  • 비밀번호 변경 검증 메서드 구현 (isPasswordChangeRequested, isCurrentPasswordProvided)
  • Lombok 어노테이션 적용 (@Getter, @Setter, @NoArgsConstructor)

회원정보 수정 서비스 로직 구현

  • UserService.updateUserProfile() 메서드 구현
  • 선택적 필드 업데이트 (null이 아닌 필드만 수정)
  • 비밀번호 변경 검증 (현재 비밀번호 확인 필수)
  • 중복 데이터 검증 (변경하려는 필드만 중복 체크)
  • 권한별 제한 검증 (CUSTOMER는 사업자번호 수정 불가)
  • BCrypt 비밀번호 암호화 처리

중복 검증 및 권한 제어

  • validateDuplicateDataForUpdate() 메서드 구현
  • 현재 사용자 데이터와 다른 경우에만 중복 체크
  • username, nickname, phoneNumber, businessNumber 중복 검증
  • validateBusinessNumberPermission() 메서드 구현
  • CUSTOMER 권한 사업자번호 수정 차단 (403 Forbidden)

API 컨트롤러 구현

  • UserController에 updateUserProfile() 메서드 추가
  • PUT /v1/users/me 엔드포인트 구현
  • JWT 토큰 기반 사용자 인증 (@AuthenticationPrincipal)
  • @Valid 어노테이션으로 요청 데이터 유효성 검증
  • 인증된 사용자만 접근 가능하도록 보안 설정

Spring Security 설정 확장

  • SecurityConfig에 PUT 메서드 권한 설정 추가
  • HttpMethod.PUT /v1/users/me 경로 인증 사용자 접근 허용
  • HTTP 메서드별 세분화된 권한 제어
  • HttpMethod import 추가

비밀번호 보안 강화

  • validatePasswordChange() 메서드 구현
  • 비밀번호 변경 시 현재 비밀번호 검증 필수
  • BCryptPasswordEncoder로 새 비밀번호 암호화
  • 현재 비밀번호 불일치 시 400 Bad Request 응답

선택적 업데이트 및 에러 처리

  • updateUserFields() 메서드 구현 (null 체크 후 업데이트)
  • 수정 불가 항목 제외 (이메일, 권한은 수정 불가)
  • 중복 데이터 400 Bad Request 처리
  • 권한 제한 403 Forbidden 처리
  • 실시간 DB 저장 및 응답 DTO 반환

테스트 및 검증

  • 포스트맨 PUT 요청 테스트 성공
  • 선택적 필드 수정 기능 확인
  • 중복 검증 및 권한 제어 동작 확인
  • 비밀번호 변경 및 암호화 처리 확인
  • modifiedAt 타임스탬프 자동 업데이트 확인

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions