SonamuProvider 설정 방법을 알아봅니다. 인증, 파일 업로드, 다국어 지원을 한 곳에서 구성할 수 있습니다.
설정 개요
인증 통합
UserService.useMe 연결로그인/로그아웃 흐름
파일 업로드
FileService 통합useTypeForm 자동 연결
다국어 지원
SD 함수 제공타입 안전한 번역
전역 상태
Context API 기반모든 컴포넌트에서 접근
기본 설정
1. SonamuProvider 설정 파일 생성
프로젝트의src/contexts/sonamu-provider.tsx 파일을 생성합니다.
2. App에 적용
__root.tsx에서 SonamuProvider를 설정합니다.
왜 SonamuProvider를 별도 파일로 만드나요?
SonamuProvider는 FileService.useUploadMutation() 같은 React 훅을 사용하므로 QueryClientProvider 아래에 배치해야 합니다.
별도 파일로 분리하면 authOptions, useSonamuContext 등의 설정과 타입을 함께 관리할 수 있습니다.인증 설정
Sonamu는 better-auth를 기반으로 인증을 처리합니다.SonamuProvider에 authOptions를 전달하면 내부적으로 better-auth 클라이언트가 생성됩니다.
authOptions 정의
better-auth 클라이언트 옵션을 정의합니다. 플러그인을 통해 사용자 필드를 확장할 수 있습니다.inferAdditionalFields란?better-auth의 기본 User 타입(id, name, email 등) 외에 프로젝트에서 추가한 필드(role 등)를 클라이언트 타입에 반영합니다.
서버에서 정의한 사용자 스키마와 일치시켜야 합니다.로그인 흐름
better-auth 클라이언트의signIn 메서드를 사용합니다.
로그아웃 흐름
세션 사용하기
컴포넌트에서useSonamuContext로 auth 클라이언트에 접근하고, auth.useSession()으로 현재 세션을 조회합니다.
파일 업로드 설정
Uploader 인터페이스
SonamuFile과 UploadParams 확장하기프론트엔드에서
SonamuFile과 UploadParams는 TypeScript의 declaration merging을 통해 프로젝트별 필드를 추가할 수 있습니다.SonamuFile과 UploadParams는 @sonamu-kit/react-components에서 import하므로, declaration merging 대상도 동일한 모듈이어야 합니다.FileService 통합
mutateAsync로 파일을 백엔드에 업로드- 업로드된 파일 정보 (
SonamuFile[]) 반환 useTypeForm이 자동으로 이 uploader를 사용
useTypeForm 자동 통합
uploader를 설정하면 useTypeForm의 submit이 자동으로 파일을 업로드합니다.
자동 업로드 메커니즘
submit 함수는 내부적으로 traverseAndUploadFiles를 호출하여 모든 File 객체를 찾아 업로드합니다.
중첩된 객체나 배열 안의 파일도 자동으로 처리됩니다.커스텀 업로드 로직
다른 업로드 서비스를 사용하려면 직접 구현할 수 있습니다.다국어 설정 (SD)
SD 함수
SD (Sonamu Dictionary) 함수는 타입 안전한 다국어 번역을 제공합니다.
사용 예시
왜 Context를 통해 SD를 제공하나요?직접 import해서 사용해도 되지만, Context를 통하면 미래에 런타임 locale 전환이나 동적 dictionary 로딩을 쉽게 추가할 수 있습니다.
타입 안전성
제네릭 타입 지정
BaseSonamuProvider에 Dictionary 타입을 지정하면 SD 함수가 타입 안전해집니다.
자동 완성
고급 설정
최소 설정 (Auth만)
파일 업로드가 필요 없다면uploader를 생략할 수 있습니다.
Auth 없이 사용
인증이 필요 없는 프로젝트라면authOptions를 생략할 수 있습니다.
로딩 상태 표시
Redirect 커스터마이징
로그인 성공 후 이동 경로를 동적으로 결정할 수 있습니다.문제 해결
”uploader is not configured” 에러
SonamuProvider에서 uploader를 전달하세요.
”auth is not configured” 에러
SonamuProvider에 authOptions를 전달하세요.
QueryClient를 찾을 수 없음
SonamuProvider를 QueryClientProvider 안에 배치하세요.
다음 단계
- useTypeForm - 폼 관리와 파일 업로드
- useListParams - 리스트 필터링
- 인증 API 개발 - 백엔드 인증 설정
- 파일 업로드 API - 백엔드 스토리지 설정