Skip to content

[Refactor] 사용자 프로필 조회 응답 DTO 정리 #31 - #40

Merged
LEE-HYUN-JE merged 6 commits into
mainfrom
refactor/#31/user-profile-endpoint
Jun 15, 2026
Merged

[Refactor] 사용자 프로필 조회 응답 DTO 정리 #31#40
LEE-HYUN-JE merged 6 commits into
mainfrom
refactor/#31/user-profile-endpoint

Conversation

@LEE-HYUN-JE

@LEE-HYUN-JE LEE-HYUN-JE commented Jun 14, 2026

Copy link
Copy Markdown
Collaborator

📌 변경 요약 (Summary)

이 PR에서 무엇을 변경했는지 간단히 설명해주세요.

GET /api/v1/auth/profile 엔드포인트의 레거시 응답 필드와 파라미터를 정리하고, Keycloak 기반 사용자 이름 처리 로직을 명확히 했습니다.


🔗 관련 이슈 (Related Issue)

이 PR과 관련된 이슈를 작성해주세요.

Closes #31


🛠 작업 내용 / 작업 순서 (Implementation Details)

이번 작업에서 수행한 내용이나 작업 순서를 작성해주세요.

  1. 프로필 조회 API의 projectId 파라미터 제거
  2. 프로필 응답 DTO에서 사용하지 않는 project 필드 제거
  3. univ 하위 필드명을 univDepartment에서 department로 변경
  4. Keycloak ID Token에서 name, given_name, family_name 클레임을 파싱하도록 확장
  5. 사용자 이름은 Keycloak name 클레임을 우선 사용하도록 정리
  6. Keycloak callback flow 문서 갱신
  7. Keycloak ID Token parser 테스트 추가

✨ 주요 변경 사항 (Key Changes)

  1. Swagger 및 컨트롤러에서 projectId 파라미터 제거
  2. 프로필 응답 구조를 { userName, univ: { grade, department } } 형태로 정리
  3. Keycloak 사용자 이름은 name 클레임을 그대로 사용하지 않고, family_name + given_name을 우선 사용
  4. 표준 이름 클레임이 없을 경우 ajou_lastName + ajou_firstName, 이후 name, preferred_username 순으로 fallback 처리
  5. 신규 사용자 저장과 기존 사용자 로그인 시 DB user_detail.user_name이 동일한 기준으로 동기화되도록 수정

🧪 테스트 결과 (Test Results)

테스트 방법 및 결과를 작성해주세요.

테스트 환경

  • Local backend server
  • Local Docker Compose MariaDB / Redis
  • Keycloak: .env에 설정된 실제 SSO 서버
  • OpenStack: .env에 설정된 실제 OpenStack 서버

테스트 방법

  1. Docker Compose로 MariaDB, Redis 실행
  2. 로컬에서 Spring Boot 서버 실행
  3. Keycloak 로그인 후 발급된 acc-session-id/api/v1/auth/profile 요청
  4. Keycloak ID Token parser 단위 테스트 실행

테스트 결과

image - 정상 응답 확인

필요한 경우 로그 또는 스크린샷 첨부

  • [v] 정상 동작 확인
  • [v] 예외 상황 테스트
  • [v] 기존 기능 영향 없음

@LEE-HYUN-JE LEE-HYUN-JE changed the title Refactor/#31/user profile endpoint [Refactor] 사용자 프로필 조회 응답 DTO 정리 #31 Jun 14, 2026
@asitisdev

asitisdev commented Jun 14, 2026

Copy link
Copy Markdown
Member

혹시 Keycloak의 name은 어떻게 설정되는 값인가요? Keycloak에서도 따로 설정 가능한 부분이 안보이는 것 같은데, Keycloak 쪽에서 ${FirstName} ${LastName}으로 자동으로 생성해서 내려주는 방식인건가요?

Keycloak 쪽 설정을 변경하여 ${LastName}${FirstName}으로 생성되도록 수정하면 좋을 것 같습니다.

@LEE-HYUN-JE

Copy link
Copy Markdown
Collaborator Author

혹시 Keycloak의 name은 어떻게 설정되는 값인가요? Keycloak에서도 따로 설정 가능한 부분이 안보이는 것 같은데, Keycloak 쪽에서 ${FirstName} ${LastName}으로 자동으로 생성해서 내려주는 방식인건가요?

Keycloak 쪽 설정을 변경하여 ${LastName}${FirstName}으로 생성되도록 수정하면 좋을 것 같습니다.

keycloak의 id token 내 name이라는 필드에 '현제 이' 같은 방식으로 full name이 들어오게 됩니다.
그럼 해당 필드를 사용하지 않고, ${LastName}${FirstName} 와 같이 acc 내에서 사용자의 이름이 사용되도록 설정을 변경하도록 하겠습니다!

@LEE-HYUN-JE

Copy link
Copy Markdown
Collaborator Author
image

@asitisdev 새 커밋에 반영 완료 되었습니다

@asitisdev
asitisdev requested a review from jjjjjk12 June 14, 2026 10:08
@jjjjjk12

Copy link
Copy Markdown
Member

Conflict 해결해주세요

@LEE-HYUN-JE
LEE-HYUN-JE merged commit fe9868a into main Jun 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor] 사용자 프로필 조회 엔드포인트 리팩토링

3 participants