Skip to content

refactor(core): 생체 인증 프롬프트 래퍼를 core:common 으로 올린다 #2195

Closed

Description

@1hyok

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

core — 코어

개요

생체 인증 프롬프트 래퍼가 두 벌이다.

  • feature/afternote/presentation/.../shared/fingerprint/BiometricAuth.kt 의 FragmentActivity.authenticateBiometric
  • feature/setting/presentation/.../passkey/PassKeyMakingScreen.kt 의 private authenticate(activity) 와 BiometricResult

허용자 조합, CryptoObject 생성과 confirmWithCryptoOperation 성공 확정, 취소 코드 세 가지를 Canceled 로 접는 분기, invokeOnCancellation 처리가 같다. #1166 본문이 이미 복제라고 적었고, 같은 CodeQL 수정이 914a440(0826, afternote)와 21df4d8(0913, setting)로 두 번 들어갔다.

사본은 이미 갈라졌다. 설정 쪽에는 canAuthenticate 사전 분기와 authenticate 초기화 예외를 잡는 try/catch 가 없다. BIOMETRIC_STRONG | DEVICE_CREDENTIAL 조합은 API 28~29 에서 PromptInfo.Builder.build() 가 IllegalArgumentException 을 던지는데, 설정 버튼은 BIOMETRIC_STRONG 가용 여부로만 켜지므로 Android 9·10 기기에서 패스키의 지문 인증을 누르면 예외가 새어 크래시가 난다.

래퍼를 core:common 의 biometric 패키지(BiometricCryptoGate.kt 옆)로 올리고 두 소비처가 쓰게 한다. 문구는 각 feature 가 인자로 넘긴다.

완료 조건

  • core:common 에 FragmentActivity.authenticateBiometric, 결과 타입, 문구 묶음이 있고 afternote 동작은 지금과 같다.
  • afternote 지문 관문과 설정 패스키 등록이 core 래퍼를 쓰고, 두 feature 의 사본은 지워진다.
  • 설정 패스키가 afternote 와 같은 사전 분기·초기화 예외 처리를 얻어, 지원하지 않는 조합에서 크래시 대신 오류로 끝난다.
  • core·afternote·설정 유닛 테스트, ktlint, :app:compileDebugUnitTestKotlin 을 통과한다.

참고

Metadata

Metadata

Assignees

Labels

area:core공용 코어·네트워크 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions