@@ -5,31 +5,21 @@ const UserContext = createContext();
5
5
export const UserProvider = ( { children } ) => {
6
6
const [ isLoggedin , setIsLoggedin ] = useState ( false ) ;
7
7
const [ user , setUser ] = useState ( null ) ;
8
+ const [ token , setToken ] = useState ( localStorage . getItem ( "jwtToken" ) ) ;
8
9
9
- const checkSession = async ( ) => {
10
- try {
11
- const response = await fetch (
12
- "https://rw2644hx4c.execute-api.us-east-1.amazonaws.com/api/users/session" ,
13
- {
14
- method : "GET" ,
15
- credentials : "include" ,
16
- }
17
- ) ;
18
-
19
- if ( response . ok ) {
20
- const data = await response . json ( ) ;
21
- setUser ( data . user ) ;
22
- setIsLoggedin ( true ) ;
23
- } else {
24
- setUser ( null ) ;
25
- setIsLoggedin ( false ) ;
10
+ useEffect ( ( ) => {
11
+ // 컴포넌트 마운트 시 로컬 스토리지의 토큰 확인
12
+ const storedToken = localStorage . getItem ( "jwtToken" ) ;
13
+ if ( storedToken ) {
14
+ setToken ( storedToken ) ;
15
+ setIsLoggedin ( true ) ;
16
+ // 토큰이 있으면 사용자 정보도 로컬 스토리지에서 가져옴
17
+ const storedUser = JSON . parse ( localStorage . getItem ( "user" ) ) ;
18
+ if ( storedUser ) {
19
+ setUser ( storedUser ) ;
26
20
}
27
- } catch ( error ) {
28
- console . error ( "Failed to check session:" , error ) ;
29
- setUser ( null ) ;
30
- setIsLoggedin ( false ) ;
31
21
}
32
- } ;
22
+ } , [ ] ) ;
33
23
34
24
const login = async ( user_id , password ) => {
35
25
try {
@@ -40,7 +30,6 @@ export const UserProvider = ({ children }) => {
40
30
headers : {
41
31
"Content-Type" : "application/json" ,
42
32
} ,
43
- credentials : "include" ,
44
33
body : JSON . stringify ( { userId : user_id , user_password : password } ) ,
45
34
}
46
35
) ;
@@ -49,6 +38,10 @@ export const UserProvider = ({ children }) => {
49
38
const data = await response . json ( ) ;
50
39
setUser ( data . user ) ;
51
40
setIsLoggedin ( true ) ;
41
+ setToken ( data . token ) ;
42
+ // 로컬 스토리지에 토큰과 사용자 정보 저장
43
+ localStorage . setItem ( "jwtToken" , data . token ) ;
44
+ localStorage . setItem ( "user" , JSON . stringify ( data . user ) ) ;
52
45
} else {
53
46
const errorData = await response . json ( ) ;
54
47
throw new Error ( errorData . message ) ;
@@ -72,6 +65,13 @@ export const UserProvider = ({ children }) => {
72
65
if ( response . ok ) {
73
66
setUser ( null ) ;
74
67
setIsLoggedin ( false ) ;
68
+ // 로컬 스토리지에서 토큰과 사용자 정보 제거
69
+ localStorage . removeItem ( "jwtToken" ) ;
70
+ localStorage . removeItem ( "user" ) ;
71
+ // 상태 초기화
72
+ setUser ( null ) ;
73
+ setIsLoggedin ( false ) ;
74
+ setToken ( null ) ;
75
75
} else {
76
76
const errorData = await response . json ( ) ;
77
77
throw new Error ( errorData . message ) ;
@@ -81,12 +81,8 @@ export const UserProvider = ({ children }) => {
81
81
}
82
82
} ;
83
83
84
- useEffect ( ( ) => {
85
- checkSession ( ) ;
86
- } , [ ] ) ;
87
-
88
84
return (
89
- < UserContext . Provider value = { { user, isLoggedin, login, logout } } >
85
+ < UserContext . Provider value = { { user, isLoggedin, token , login, logout } } >
90
86
{ children }
91
87
</ UserContext . Provider >
92
88
) ;
0 commit comments