diff --git a/src/api/auth.ts b/src/api/auth.ts index c2ddd99a..bd43ab1d 100644 --- a/src/api/auth.ts +++ b/src/api/auth.ts @@ -45,7 +45,7 @@ export const signIn = async ( }; // 1.2 사용자 로그아웃 -export const logout = async () => { +export const logout = async (): Promise> => { const response = await api.post('/auth/logout'); return response.data; }; @@ -98,23 +98,6 @@ export const signUp = async ( return response.data; }; -// 2.6 기본 고용주 회원가입 -/* -export const ownerSignUp = async ( - signupInfo: OwnerInfoRequest, - logoImage?: File, -): Promise> => { - const formData = new FormData(); - // 회사 로고 - if (logoImage) { - formData.append('logo_image', logoImage); - } - formData.append('signup_info', JSON.stringify(signupInfo)); - const response = await apiWithoutAuth.post('/auth/owners', formData); - return response.data; -}; -*/ - // 2.7 이메일 인증코드 검증 export const patchAuthentication = async ( info: AuthenticationRequest, @@ -138,14 +121,15 @@ export const reIssueAuthentication = async ( }; // 2.9 탈퇴하기 -export const withdraw = async () => { +export const withdraw = async (): Promise> => { const response = await api.delete('/auth'); return response.data; }; +// 고용주 회원가입 export const signUpEmployer = async ( signupInfo: EmployerRegistrationRequest, -): Promise<{ success: boolean }> => { +): Promise> => { const response = await api.post(`/auth/owners`, signupInfo); return response.data; }; diff --git a/src/hooks/api/useAuth.ts b/src/hooks/api/useAuth.ts index 9a8ac8e6..4c0f21ff 100644 --- a/src/hooks/api/useAuth.ts +++ b/src/hooks/api/useAuth.ts @@ -15,6 +15,7 @@ import { import { AuthenticationResponse, SignInResponse, + SignUpResponse, TempSignUpResponse, } from '@/types/api/auth'; import { @@ -61,10 +62,12 @@ export const useSignIn = () => { return useMutation({ mutationFn: signIn, onSuccess: (data: RESTYPE) => { - setAccessToken(data.data.access_token); - setRefreshToken(data.data.refresh_token); - navigate('/splash'); - window.location.reload(); + if (data.success) { + setAccessToken(data.data.access_token); + setRefreshToken(data.data.refresh_token); + navigate('/splash'); + window.location.reload(); + } }, onError: () => { alert('아이디 혹은 비밀번호를 다시 확인해주세요.'); @@ -78,15 +81,17 @@ export const useLogout = () => { const { updateAccountType, updateName } = useUserStore(); return useMutation({ mutationFn: logout, - onSuccess: () => { - // 토큰 삭제 - deleteAccessToken(); - deleteRefreshToken(); - // 유저 타입 전역 변수 초기화 - updateAccountType(undefined); - updateName(''); - // 스플래시 이동 - navigate('/splash'); + onSuccess: (data: RESTYPE) => { + if (data.success) { + // 토큰 삭제 + deleteAccessToken(); + deleteRefreshToken(); + // 유저 타입 전역 변수 초기화 + updateAccountType(undefined); + updateName(''); + // 스플래시 이동 + navigate('/splash'); + } }, onError: () => { alert('로그아웃을 다시 시도해주세요.'); @@ -101,9 +106,11 @@ export const useReIssueToken = () => { return useMutation({ mutationFn: reIssueToken, onSuccess: (data: RESTYPE) => { - setAccessToken(data.data.access_token); - setRefreshToken(data.data.refresh_token); - navigate('/splash'); // 재발급 후 유형 확인 + if (data.success) { + setAccessToken(data.data.access_token); + setRefreshToken(data.data.refresh_token); + navigate('/splash'); // 재발급 후 유형 확인 + } }, onError: () => { alert('만료되었습니다. 다시 로그인해주세요.'); @@ -138,8 +145,14 @@ export const useGetUserType = () => { // 2.4 기본 임시회원가입 훅 export const useTempSignUp = () => { + const { updateTryCnt } = useEmailTryCountStore(); return useMutation({ mutationFn: tempSignUp, + onSuccess: (data: RESTYPE) => { + if (data.success) { + updateTryCnt(data.data.try_cnt); + } + }, onError: (error) => { console.log('임시 회원가입 실패 : ', error.message); }, @@ -152,9 +165,11 @@ export const useSignUp = () => { return useMutation({ mutationFn: signUp, onSuccess: (data: RESTYPE) => { - deleteTemporaryToken(); - setAccessToken(data.data.access_token); - setRefreshToken(data.data.refresh_token); + if (data.success) { + deleteTemporaryToken(); + setAccessToken(data.data.access_token); + setRefreshToken(data.data.refresh_token); + } }, onError: () => { alert('회원가입에 실패하였습니다. 다시 시도해주세요.'); @@ -168,7 +183,9 @@ export const usePatchAuthentication = () => { return useMutation({ mutationFn: patchAuthentication, onSuccess: (data: RESTYPE) => { - setTemporaryToken(data.data.temporary_token); + if (data.success) { + setTemporaryToken(data.data.temporary_token); + } }, onError: (error) => { alert('인증코드를 다시 확인해주세요.'); @@ -184,8 +201,10 @@ export const useReIssueAuthentication = () => { return useMutation({ mutationFn: reIssueAuthentication, onSuccess: (data: RESTYPE) => { - // 이메일 재발송 횟수 업데이트 - updateTryCnt(data.data.try_cnt); + if (data.success) { + // 이메일 재발송 횟수 업데이트 + updateTryCnt(data.data.try_cnt); + } }, onError: () => { alert('인증코드 재발송이 실패하였습니다. 회원가입을 다시 시도해주세요.'); @@ -200,15 +219,17 @@ export const useWithdraw = () => { const { updateAccountType, updateName } = useUserStore(); return useMutation({ mutationFn: withdraw, - onSuccess: () => { - // 토큰 삭제 - deleteAccessToken(); - deleteRefreshToken(); - // 유저 타입 전역 변수 초기화 - updateAccountType(undefined); - updateName(''); - // 스플래시 이동 - navigate('/splash'); + onSuccess: (data: RESTYPE) => { + if (data.success) { + // 토큰 삭제 + deleteAccessToken(); + deleteRefreshToken(); + // 유저 타입 전역 변수 초기화 + updateAccountType(undefined); + updateName(''); + // 스플래시 이동 + navigate('/splash'); + } }, onError: () => { alert('탈퇴에 실패하였습니다.'); @@ -221,10 +242,16 @@ export const useSignupEmployer = (setSuccess: () => void) => { const navigate = useNavigate(); return useMutation({ mutationFn: signUpEmployer, - onSuccess: () => { - setSuccess(); + onSuccess: (data: RESTYPE) => { + if (data.success) { + deleteTemporaryToken(); + setAccessToken(data.data.access_token); + setRefreshToken(data.data.refresh_token); + setSuccess(); + } }, onError: () => { + alert('회원가입에 실패하였습니다. 다시 시도해주세요.'); navigate('/signin'); }, });