Skip to content

[REFACTOR] 아이디(닉네임) 한글 가능 #300

Description

@yhi9839

💡 구현할 기능

피드백을 반영하여 아이디(닉네임)에 한글과 영문 대문자를 사용할 수 있도록 변경한다.

현재 정책

  • 1~20자
  • 영문 소문자 a-z
  • 숫자 0-9
  • 다음 특수문자만 허용
    ! @ # $ % ^ & * ( ) _ + - = [ ] { } ; ' : " \ | , . < > / ?
  • 한글, 공백, 영문 대문자, 이모지 등은 허용하지 않음

업데이트 정책

  • 1~20자
  • 허용 문자
    • 한글 완성형 가-힣
    • 한글 호환 자모 ㄱ-ㅎ, ㅏ-ㅣ
    • 영문 대문자 A-Z
    • 영문 소문자 a-z
    • 숫자 0-9
    • 기존 허용 특수문자
      ! @ # $ % ^ & * ( ) _ + - = [ ] { } ; ' : " \ | , . < > / ?
  • 백틱(U+0060)과 ~는 기존대로 금지
  • 이모지와 그 밖의 문자는 금지
  • 앞·뒤·중간 공백뿐 아니라 탭, 개행, NBSP 등 모든 공백 문자를 금지
  • 공백이나 허용되지 않은 문자를 자동으로 삭제하지 않고 오류를 안내
  • 중복확인·저장·비교 전에 Unicode NFC 정규화 적용

대소문자 정책

영문 대문자를 허용하되 대소문자만 다른 아이디가 서로 다른 사용자에게 배정되지 않도록 다음 정책을 적용한다.

  • 입력하고 표시할 때는 사용자가 입력한 대소문자를 그대로 보존
  • 중복확인, 로그인, 검색, 회원 조회에서는 영문 대소문자를 구분하지 않음
    • BookMo, bookmo, BOOKMO는 모두 같은 아이디로 판단
  • 다른 사용자는 대소문자만 다른 아이디를 사용할 수 없음
  • 본인이 기존 아이디의 대소문자 표시만 변경하는 것은 허용

예시:

  • 본인이 BookMo에서 bookMo로 변경
    • 비교값은 모두 bookmo이므로 중복확인을 자동 통과
    • 표시 아이디만 bookMo로 변경
  • 다른 사용자가 BookMo를 사용 중인 상태에서 bookmo 또는 BOOKMO를 입력
    • 이미 사용 중인 아이디로 판단하여 거부
  • BookMo, bookmo, BOOKMO 중 어떤 형태로 로그인하거나 회원을 조회해도 동일한 계정으로 처리

✅ 할 일

  • BE 공통 닉네임 정규화·검증 정책 구현
  • 닉네임 중복확인, 회원가입, 프로필 변경에서 동일한 검증 정책 사용
  • NFC 정규화 후 영문을 소문자로 변환한 비교용 닉네임 적용
  • 비교용 닉네임에 DB 고유 제약조건을 적용하여 대소문자 중복 방지
  • 본인의 대소문자 표시만 변경하는 경우 중복검사를 자동 통과하도록 처리
  • 로그인, 검색, 회원 조회에서 대소문자를 구분하지 않도록 처리
  • 닉네임이 포함된 URL 경로를 path segment 단위로 인코딩하고 정확히 한 번만 디코딩
  • FE와 RN에서 잘못된 입력을 자동 삭제하지 않고 오류를 표시하도록 변경
  • 한글 IME 조합 중 입력 문자가 삭제되거나 중복확인 상태가 잘못 유지되지 않도록 처리
  • BE·FE·RN에 문자, 공백, 길이, 정규화, 대소문자 중복 및 동시 선점 테스트 추가

📎 참고

처리 순서는 다음과 같이 통일한다.

NFC 정규화 → 공백 검사 → 길이 검사 → 허용 문자 검사 → 비교값 생성 → 중복 검사

비교값 예시:

  • 표시값 BookMo → 비교값 bookmo
  • 표시값 책모ABC → 비교값 책모abc
  • 표시값 책모abc → 비교값 책모abc

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions