Skip to content

Commit 37beec8

Browse files
committed
feat : update axios user api
1 parent e666148 commit 37beec8

File tree

7 files changed

+92
-76
lines changed

7 files changed

+92
-76
lines changed

.env

Whitespace-only changes.

src/apis/AuthAPI.js

+52-48
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,21 @@
11
import React from 'react';
22
import { Route, Link, Router, useNavigate } from 'react-router-dom';
33
import axios from 'axios';
4-
import authAxiosInstance from './AuthInstance';
4+
import { authAxiosInstance } from '@/apis/axiosConfig';
55

66
const navigate = useNavigate();
77

8-
//interceptors
9-
authAxiosInstance.interceptors.request.use(
10-
(config) => {
11-
console.log('Request Interceptors Success : ', config);
12-
return config;
13-
},
14-
15-
(error) => {
16-
console.log('Requset Interceptors Success : ', error);
17-
return Promise.reject(error);
18-
}
19-
);
20-
21-
authAxiosInstance.interceptors.response.use((response) => {
22-
console.log('Response Interceptors Success : ', response);
23-
async (error) => {
24-
//Access Token 만료 시 Refresh Token으로 재발급
25-
const originalRequest = error.config;
26-
console.log(error);
27-
28-
if (error.response?.status === 401 && !originalRequest._retry) {
29-
originalRequest._retry = true;
30-
const refreshToken = localStorage.getItem('refreshToken');
31-
32-
if (refreshToken) {
33-
try {
34-
await authAxiosInstance.post('', { refreshToken });
35-
return authAxiosInstance(originalRequest);
36-
} catch (refreshError) {
37-
console.log('Refresh Token invalid: ', refreshError);
38-
navigate('/login');
39-
}
40-
}
41-
}
42-
43-
console.log('Response Interceptors Error : ', error);
44-
return Promise.reject(error);
45-
};
46-
});
47-
488
/*
499
APIs
5010
5111
*/
5212

5313
export const login = async (email, password) => {
5414
try {
55-
const response = authAxiosInstance.post('/login', { email, password });
15+
const response = await authAxiosInstance.post('/auth/login', {
16+
email,
17+
password,
18+
});
5619
console.log('Login successful:', response.data);
5720
} catch (error) {
5821
console.log('Error In AuthAPI Login: ', error);
@@ -63,8 +26,8 @@ export const login = async (email, password) => {
6326
// 로그아웃
6427
export const logout = async () => {
6528
try {
66-
const response = authAxiosInstance.post('/logout');
67-
Router.push('/login');
29+
const response = await authAxiosInstance.post('/auth/logout');
30+
navigate('/login'); // Router path
6831
return response;
6932
} catch (error) {
7033
console.log('Error In AuthAPI Logout: ', error);
@@ -75,25 +38,66 @@ export const logout = async () => {
7538
// 회원가입
7639
export const register = async (email, password) => {
7740
try {
78-
const res = authAxiosInstance.post('/register', { email, password });
41+
const res = await authAxiosInstance.post('/auth/register', {
42+
email,
43+
password,
44+
});
7945
return res;
8046
} catch (err) {
8147
console.log('Error In AuthAPI Register: ', err);
8248
console.error(err);
8349
}
8450
};
8551

86-
// 프로필(유저정보)
87-
export const profile = async (email, password) => {
52+
//회원가입 이메일 인증 요청
53+
export const registerEmailSend = async (email) => {
54+
try {
55+
const res = await authAxiosInstance.post('/auth/send', { email });
56+
return res;
57+
} catch (err) {
58+
console.log('Error In AuthAPI RegisterEmailSend: ', err);
59+
console.error(err);
60+
}
61+
};
62+
63+
//회원가입 이메일 인증 확인
64+
export const registerEmailVertify = async (email, code) => {
8865
try {
89-
const res = authAxiosInstance.get('/profile');
66+
const res = await authAxiosInstance.post('/auth/vertify', { email, code });
67+
return res;
68+
} catch (err) {
69+
console.log('Error In AuthAPI RegisterEmailCheck: ', err);
70+
console.error(err);
71+
}
72+
};
73+
74+
// 프로필(유저정보) 조회
75+
export const profile = async (email) => {
76+
try {
77+
const res = await authAxiosInstance.get(`/member/mypage/${email}`);
9078
return res;
9179
} catch (err) {
9280
console.log('Error In AuthAPI Profile: ', err);
9381
console.error(err);
9482
}
9583
};
9684

85+
// 프로필(유저정보) 수정
86+
export const profileUpdate = async (email, data) => {
87+
try {
88+
const res = await authAxiosInstance.patch(`/member/mypage`, data, {
89+
headers: {
90+
'Content-Type': 'application/json',
91+
},
92+
});
93+
console.log(res);
94+
return res;
95+
} catch (err) {
96+
console.log('Error In AuthAPI ProfileUpdate: ', err);
97+
console.error(err);
98+
}
99+
};
100+
97101
// 회원탈퇴
98102
export const unRegister = async () => {
99103
try {

src/apis/AuthInstance.js

+29-26
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
import axios from 'axios';
22
import React from 'react';
3-
import { Route, Router } from 'react-router-dom';
3+
import { Route, Router, useNavigate } from 'react-router-dom';
4+
5+
const navigate = useNavigate();
46

57
const authAxiosInstance = axios.create({
6-
baseURL: '',
8+
baseURL: '/api',
79
timeout: 5000,
810
headers: {
911
'Content-Type': 'application/json',
1012
'Access-Control-Allow-Headers': 'Authorization, Content-Type',
1113
},
12-
withCredentials: true, //To use HttpOnly Cookie
14+
withCredentials: true, //To use Cookie
1315
});
1416

1517
authAxiosInstance.interceptors.request.use(
1618
(config) => {
1719
console.log('Request Interceptors Success : ', config);
1820

19-
const accessToken = localStorage.getItem('accessToken');
20-
const refreshToken = localStorage.getItem('refreshToken');
21+
// const accessToken = localStorage.getItem('accessToken');
22+
// const refreshToken = localStorage.getItem('refreshToken');
2123

22-
if (accessToken) {
23-
config.headers.Authorization = `Bearer ${accessToken}`;
24-
}
24+
// if (accessToken) {
25+
// config.headers.Authorization = `Bearer ${accessToken}`;
26+
// }
2527

2628
return config;
2729
},
@@ -46,26 +48,27 @@ authAxiosInstance.interceptors.response.use(
4648
if (error.response?.status == 401 && !originalRequest._retry) {
4749
originalRequest._retry = true;
4850

49-
const refreshToken = localStorage.getItem('refreshToken');
51+
// Cookie Refresh Token
52+
try {
53+
await axios.post('/auth/refresh', {}, { withCredentials: true });
54+
return authAxiosInstance(originalRequest);
55+
} catch (err) {
56+
console.log('Token refresh failed', err);
57+
navigate('/login'); // Router path
58+
}
5059

51-
if (refreshToken) {
52-
// Cookie Refresh Token
53-
// try {
54-
// await axios.post('', {}, { withCredentials: true });
55-
// return authAxiosInstance(originalRequest);
56-
// } catch (refreshError) {
57-
// console.log('Refresh Token invalid: ', refreshError);
58-
// }
60+
// const refreshToken = localStorage.getItem('refreshToken');
5961

60-
try {
61-
const { data } = await axios.post('', { refreshToken });
62-
localStorage.setItem('accessToken', data.accessToken);
63-
originalRequest.headers.Authorization = `Bearer ${data.accessToken}`;
64-
return authAxiosInstance(originalRequest);
65-
} catch (refreshError) {
66-
console.log('Refresh Token invalid: ', refreshError);
67-
}
68-
}
62+
// if (refreshToken) {
63+
// try {
64+
// const { data } = await axios.post('', { refreshToken });
65+
// localStorage.setItem('accessToken', data.accessToken);
66+
// originalRequest.headers.Authorization = `Bearer ${data.accessToken}`;
67+
// return authAxiosInstance(originalRequest);
68+
// } catch (refreshError) {
69+
// console.log('Refresh Token invalid: ', refreshError);
70+
// }
71+
// }
6972
}
7073

7174
return Promise.reject(error);

src/common/layout/MainLayout.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Outlet } from 'react-router-dom';
2-
import { useAuth } from '@/store/useStore';
2+
import { useAuth } from '@/store/userStore';
33
import Footer from '../Footer';
44
import AuthHeader from '../Header/AuthHeader';
55
import DefaultHeader from '../Header/DefaultHeader';

src/pages/Login.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useAuth } from '@/store/useStore';
1+
import { useAuth } from '@/store/userStore';
22
import { use } from 'react';
33
import { useState } from 'react';
44

File renamed without changes.

vite.config.js

+9
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,14 @@ export default defineConfig({
99
},
1010
server: {
1111
port: 3000,
12+
proxy: {
13+
'/api': {
14+
target: 'http://localhost:5000',
15+
changeOrigin: true,
16+
// rewrite: (path) => path.replace(/^\/api/, ''),
17+
secure: false,
18+
ws: true,
19+
},
20+
},
1221
},
1322
});

0 commit comments

Comments
 (0)