Skip to content

Commit 3cef832

Browse files
authored
(24/05/12 - 1) 클로즈 베타 테스트 버전 배포합니다.
(24/05/12 - 1) 클로즈 베타 테스트 버전 배포합니다.
2 parents 473c703 + cea8a12 commit 3cef832

File tree

5 files changed

+51
-50
lines changed

5 files changed

+51
-50
lines changed

src/components/global/token/tokenManagement.jsx

Lines changed: 33 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const fetchToken = async (code) => {
2020
'Content-Type': 'application/json',
2121
},
2222
});
23+
2324
if (!response.ok) {
2425
throw new Error(`HTTP error! status: ${response.status}`);
2526
}
@@ -39,58 +40,49 @@ const TokenManagement = () => {
3940
const code = query.get('code');
4041
const role = query.get('role');
4142

42-
// console.log('code:', code);
43-
// console.log('role:', role);
43+
console.log('code:', code);
44+
console.log('role:', role);
4445

4546
if (!code || !role) {
46-
console.error('코드 또는 역할이 URL에 포함되어 있지 않습니다.');
4747
navigate('/login');
4848
return;
4949
}
5050

51-
fetchToken(code, role)
52-
.then((headers) => {
53-
const accessToken = headers.get('Authorization');
54-
const refreshToken = headers.get('Authorization-refresh');
51+
if (role === 'GUEST') {
52+
navigate('/login/terms', { state: {code} });
53+
} else {
54+
fetchToken(code)
55+
.then((headers) => {
56+
const accessToken = headers.get('Authorization');
57+
const refreshToken = headers.get('Authorization-refresh');
5558

56-
// console.log('accessToken:', accessToken);
57-
// console.log('refreshToken:', refreshToken);
59+
if (!accessToken || !refreshToken) {
60+
alert('토큰을 받아오는 데 실패하였습니다. 다시 시도해주세요.');
61+
navigate('/login');
62+
return;
63+
}
64+
dispatch(setTokens(accessToken, refreshToken));
65+
localStorage.setItem(ACCESS_TOKEN, accessToken);
66+
localStorage.setItem(REFRESH_TOKEN, refreshToken);
5867

59-
if (!accessToken || !refreshToken) {
60-
alert('토큰을 받아오는 데 실패하였습니다. 다시 시도해주세요.');
61-
navigate('/login');
62-
return;
63-
}
64-
dispatch(setTokens(accessToken, refreshToken));
65-
localStorage.setItem(ACCESS_TOKEN, accessToken);
66-
localStorage.setItem(REFRESH_TOKEN, refreshToken);
67-
// console.log('redux 저장 상태', store.getState());
68-
69-
const decoded = decodeToken(accessToken);
70-
const userRole = decoded.role;
68+
const decoded = decodeToken(accessToken);
7169

72-
// console.log('userRole:', userRole);
73-
// console.log('decoded:', decoded);
74-
75-
if (userRole === 'GUEST') {
76-
// console.log('약관 동의 페이지로 이동합니다.');
77-
navigate('/login/terms', { state: { code } });
78-
} else if (['MEMBER', 'PREMIUM', 'ADMIN'].includes(userRole)) {
79-
// console.log('회원 정보가 존재합니다. 메인 페이지로 이동합니다.');
80-
navigate(prevPage);
81-
initializeSSE(queryClient, dispatch);
82-
} else {
70+
if (['MEMBER', 'PREMIUM', 'ADMIN'].includes(decoded.role)) {
71+
navigate(prevPage || '/');
72+
initializeSSE(queryClient, dispatch);
73+
} else {
74+
alert('로그인에 실패하였습니다. 다시 시도해주세요.');
75+
navigate('/login');
76+
}
77+
})
78+
.catch((error) => {
79+
console.error('토큰 요청 중 오류가 발생했습니다:', error);
8380
alert('로그인에 실패하였습니다. 다시 시도해주세요.');
8481
navigate('/login');
85-
}
86-
})
87-
.catch((error) => {
88-
console.error('토큰 요청 중 오류가 발생했습니다:', error);
89-
alert('로그인에 실패하였습니다. 다시 시도해주세요.');
90-
navigate('/login');
91-
});
92-
}, [navigate, location, dispatch]);
82+
});
83+
}
84+
}, [navigate, location, dispatch, queryClient]);
9385
return null;
9486
};
9587

96-
export default TokenManagement;
88+
export default TokenManagement;

src/components/pages/loginPage/nicknamePage.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ const NicknamePage = () => {
157157
age: ageRange,
158158
gender: genderData,
159159
};
160-
await fetchAPI('/api/member/nickname', 'POST', body);
160+
await fetchAPI('/api/member', 'POST', body);
161161
navigate('/');
162162
showSuccessToast('환영합니다!');
163163
} catch (error) {

src/components/pages/myPage/secessionPage.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import TabBar from '../../ui/tabBar/tabBar';
99
import SecessionWarning from '../../../asset/image/secessionWarning.svg';
1010
import { fetchAPI } from '../../global/utils/apiUtil.js';
1111
import { showErrorToast, showSuccessToast } from '../../ui/toast/toast.tsx';
12+
import {ACCESS_TOKEN, REFRESH_TOKEN} from '../../global/constants/index.ts'
13+
import {alertCount} from '../../../store/actions/alertActions.js'
14+
import { useDispatch } from 'react-redux';
15+
import {setLoggedIn} from'../../../store/actions/userActions';
1216

1317
const Divider = styled.div`
1418
height: 0.3rem;
@@ -20,6 +24,7 @@ const Divider = styled.div`
2024
function SecessionPage() {
2125
const navigate = useNavigate();
2226
const location = useLocation();
27+
const dispatch = useDispatch();
2328
const { nickname } = location.state as { nickname: string };
2429
const [isAgreed, setIsAgreed] = useState(false);
2530
const [secessionReason, setSecessionReason] = useState('');
@@ -49,7 +54,11 @@ function SecessionPage() {
4954
try {
5055
await fetchAPI('/api/member/leave', 'DELETE');
5156
showSuccessToast('성공적으로 탈퇴 처리되었습니다.');
52-
navigate('/');
57+
localStorage.removeItem(ACCESS_TOKEN);
58+
localStorage.removeItem(REFRESH_TOKEN);
59+
dispatch(setLoggedIn(false));
60+
dispatch(alertCount(0));
61+
navigate('/secessionComplete-page');
5362
} catch (error) {
5463
showErrorToast(`탈퇴 처리 중 오류가 발생했습니다: ${error}`);
5564
}

src/components/pages/searchPage/companyRegistPage.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { StyledPage, StyledHeader } from '../../../styledComponent.js';
77
import TitleHeader from '../../ui/header/titleHeader';
88
import TabBar from '../../ui/tabBar/tabBar';
99
import { city, type } from '../../global/constants/companyOption.ts';
10-
import { setHeaders } from '../../../utils/utils';
1110
import { showErrorToast, showSuccessToast } from '../../ui/toast/toast.tsx';
1211

1312
interface CompanyInfoProps {
@@ -20,7 +19,6 @@ interface CompanyInfoProps {
2019

2120
function CompanyRegistPage() {
2221
const navigate = useNavigate();
23-
const headers = setHeaders();
2422

2523
const [companyInfo, setCompanyInfo] = useState({
2624
name: '',
@@ -69,7 +67,7 @@ function CompanyRegistPage() {
6967
checkRequiredFields(companyInfo);
7068

7169
try {
72-
await axios.post(`${BASE_URL}/api/company`, companyInfo, headers);
70+
await axios.post(`${BASE_URL}/api/company`, companyInfo);
7371
showSuccessToast('기업 등록이 완료되었어요!');
7472
navigate('/search-company');
7573
} catch (error) {

src/components/pages/termsPage/termsPage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import { showErrorToast, showSuccessToast } from '../../ui/toast/toast.tsx';
1616
import { initializeSSE } from '../../global/utils/eventApiUtils.js';
1717
import { useQueryClient } from '@tanstack/react-query';
1818
import { useDispatch } from 'react-redux';
19+
import {setTokens} from '../../../store/actions/authActions';
1920

2021
interface LocationState {
21-
code?: string;
22+
code: string;
2223
}
2324

2425
interface TermsAgreement {
@@ -35,8 +36,8 @@ export default function TermsPage() {
3536
const location = useLocation();
3637
const queryClient = useQueryClient();
3738
const dispatch = useDispatch();
38-
const { code } = (location.state || {}) as LocationState;
39-
39+
const { code } = location.state as LocationState;
40+
4041
// =========================================================== 약관 동의 확인을 위한 부분
4142
const [allAgreed, setAllAgreed] = useState<boolean>(false);
4243
const [termsAgreement, setTermsAgreement] = useState<TermsAgreement>({
@@ -105,7 +106,7 @@ export default function TermsPage() {
105106

106107
// =========================================================== 토큰 발급을 위한 부분
107108

108-
const fetchToken = async (code?: string): Promise<Headers> => {
109+
const fetchToken = async (code: string): Promise<Headers> => {
109110
if (!code) throw new Error('Code is required');
110111
const response = await fetch(`${BASE_URL}/api/auth/token?code=${code}`, {
111112
method: 'GET',
@@ -139,6 +140,7 @@ export default function TermsPage() {
139140

140141
localStorage.setItem(ACCESS_TOKEN, accessToken);
141142
localStorage.setItem(REFRESH_TOKEN, refreshToken);
143+
dispatch(setTokens(accessToken, refreshToken));
142144
navigate('/login/member-info');
143145
showSuccessToast('회원 가입을 축하드립니다!');
144146
initializeSSE(queryClient, dispatch);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy