fix(WEB): 프로필 이미지 업로드 및 회사 로고 기능 수정

AccountInfoManagement:
- toAbsoluteUrl() 함수 추가 (상대경로 → 절대 URL 변환)
- getAccountInfo()에서 /api/v1/profiles/me 조회 추가 (이미지 새로고침 후 유지)
- uploadProfileImage() 구현 (2단계: 파일 업로드 → 프로필 업데이트)
- updateAgreements() 구현 (약관 동의 수정)
- withdrawAccount()에 password 파라미터 추가

CompanyInfoManagement:
- toAbsoluteUrl() 함수 추가 (로고 이미지 경로 변환)

fetch-wrapper:
- FormData 전송 시 Content-Type 헤더 제외 (브라우저 자동 설정)
This commit is contained in:
2025-12-30 22:54:24 +09:00
parent c885844a3a
commit d4e64c290c
4 changed files with 396 additions and 36 deletions

View File

@@ -83,7 +83,17 @@ export async function serverFetch(
const cookieStore = await cookies();
const refreshToken = cookieStore.get('refresh_token')?.value;
const headers = await getServerApiHeaders();
const baseHeaders = await getServerApiHeaders() as Record<string, string>;
// FormData일 경우 Content-Type을 제외 (브라우저가 자동 설정)
const isFormData = options?.body instanceof FormData;
const headers: HeadersInit = isFormData
? {
Accept: baseHeaders.Accept,
Authorization: baseHeaders.Authorization,
'X-API-KEY': baseHeaders['X-API-KEY'],
}
: baseHeaders;
let response = await fetch(url, {
...options,
@@ -107,7 +117,15 @@ export async function serverFetch(
await setNewTokenCookies(refreshResult);
// 새 토큰으로 원래 요청 재시도
const newHeaders = await getServerApiHeaders(refreshResult.accessToken);
const newBaseHeaders = await getServerApiHeaders(refreshResult.accessToken) as Record<string, string>;
// FormData일 경우 Content-Type을 제외 (브라우저가 자동 설정)
const newHeaders: HeadersInit = isFormData
? {
Accept: newBaseHeaders.Accept,
Authorization: newBaseHeaders.Authorization,
'X-API-KEY': newBaseHeaders['X-API-KEY'],
}
: newBaseHeaders;
response = await fetch(url, {
...options,
headers: {