Skip to main content
Sonamu 프론트엔드 통합의 시작점인 SonamuProvider 설정 방법을 알아봅니다. 인증, 파일 업로드, 다국어 지원을 한 곳에서 구성할 수 있습니다.

설정 개요

인증 통합

UserService.useMe 연결로그인/로그아웃 흐름

파일 업로드

FileService 통합useTypeForm 자동 연결

다국어 지원

SD 함수 제공타입 안전한 번역

전역 상태

Context API 기반모든 컴포넌트에서 접근

기본 설정

1. SonamuProvider 설정 파일 생성

프로젝트의 src/contexts/sonamu-provider.tsx 파일을 생성합니다.

2. App에 적용

__root.tsx에서 SonamuProvider를 설정합니다.
왜 SonamuProvider를 별도 파일로 만드나요?SonamuProviderFileService.useUploadMutation() 같은 React 훅을 사용하므로 QueryClientProvider 아래에 배치해야 합니다. 별도 파일로 분리하면 authOptions, useSonamuContext 등의 설정과 타입을 함께 관리할 수 있습니다.

인증 설정

Sonamu는 better-auth를 기반으로 인증을 처리합니다. SonamuProviderauthOptions를 전달하면 내부적으로 better-auth 클라이언트가 생성됩니다.

authOptions 정의

better-auth 클라이언트 옵션을 정의합니다. 플러그인을 통해 사용자 필드를 확장할 수 있습니다.
inferAdditionalFields란?better-auth의 기본 User 타입(id, name, email 등) 외에 프로젝트에서 추가한 필드(role 등)를 클라이언트 타입에 반영합니다. 서버에서 정의한 사용자 스키마와 일치시켜야 합니다.

로그인 흐름

better-auth 클라이언트의 signIn 메서드를 사용합니다.

로그아웃 흐름

세션 사용하기

컴포넌트에서 useSonamuContext로 auth 클라이언트에 접근하고, auth.useSession()으로 현재 세션을 조회합니다.

파일 업로드 설정

Uploader 인터페이스

SonamuFile과 UploadParams 확장하기SonamuFileUploadParams는 TypeScript의 declaration merging을 통해 프로젝트별 필드를 추가할 수 있습니다.
프론트엔드에서 SonamuFileUploadParams@sonamu-kit/react-components에서 import하므로, declaration merging 대상도 동일한 모듈이어야 합니다.

FileService 통합

동작:
  1. mutateAsync로 파일을 백엔드에 업로드
  2. 업로드된 파일 정보 (SonamuFile[]) 반환
  3. useTypeForm이 자동으로 이 uploader를 사용

useTypeForm 자동 통합

uploader를 설정하면 useTypeFormsubmit이 자동으로 파일을 업로드합니다.
자동 업로드 메커니즘submit 함수는 내부적으로 traverseAndUploadFiles를 호출하여 모든 File 객체를 찾아 업로드합니다. 중첩된 객체나 배열 안의 파일도 자동으로 처리됩니다.

커스텀 업로드 로직

다른 업로드 서비스를 사용하려면 직접 구현할 수 있습니다.

다국어 설정 (SD)

SD 함수

SD (Sonamu Dictionary) 함수는 타입 안전한 다국어 번역을 제공합니다.

사용 예시

왜 Context를 통해 SD를 제공하나요?직접 import해서 사용해도 되지만, Context를 통하면 미래에 런타임 locale 전환이나 동적 dictionary 로딩을 쉽게 추가할 수 있습니다.

타입 안전성

제네릭 타입 지정

BaseSonamuProvider에 Dictionary 타입을 지정하면 SD 함수가 타입 안전해집니다.

자동 완성

고급 설정

최소 설정 (Auth만)

파일 업로드가 필요 없다면 uploader를 생략할 수 있습니다.
uploader를 생략하면 FileInput 사용 시 에러가 발생합니다. 파일 업로드 기능이 필요하다면 반드시 설정하세요.

Auth 없이 사용

인증이 필요 없는 프로젝트라면 authOptions를 생략할 수 있습니다.

로딩 상태 표시

Redirect 커스터마이징

로그인 성공 후 이동 경로를 동적으로 결정할 수 있습니다.

문제 해결

”uploader is not configured” 에러

해결: SonamuProvider에서 uploader를 전달하세요.

”auth is not configured” 에러

해결: SonamuProviderauthOptions를 전달하세요.

QueryClient를 찾을 수 없음

해결: SonamuProviderQueryClientProvider 안에 배치하세요.

다음 단계