11import { create } from "zustand" ;
2- import { persist } from "zustand/middleware" ;
32import { User } from "@/types/AuthTypes" ;
43import {
54 postSignIn ,
@@ -9,11 +8,10 @@ import {
98} from "@/lib/api/auth" ;
109import { getUserInfo } from "@/lib/api/user" ;
1110import { proxy } from "@/lib/api/axiosInstanceApi" ;
11+ import { persist } from "zustand/middleware" ;
1212
1313interface AuthStore {
1414 user : User | null ;
15- isLoggedIn : boolean ;
16- checkLogin : ( ) => Promise < void > ;
1715 login : ( body : signInProps ) => Promise < boolean > ;
1816 SNSLogin : (
1917 provider : "google" | "kakao" ,
@@ -22,68 +20,59 @@ interface AuthStore {
2220 logout : ( ) => Promise < void > ;
2321}
2422
25- const useAuthStore = create < AuthStore > ( ) ( ( set ) => ( {
26- user : null ,
27- isLoggedIn : false ,
28-
29- checkLogin : async ( ) => {
30- try {
31- const response = await proxy . get ( "/api/auth/sign-check" ) ;
32- if ( response . data . isLoggedIn ) {
33- const userInfo = await getUserInfo ( ) ;
34- if ( userInfo ) {
35- set ( { isLoggedIn : true , user : userInfo } ) ;
36- }
37- } else {
38- set ( { isLoggedIn : false , user : null } ) ;
39- }
40- } catch ( error ) {
41- console . error ( "로그인 상태 확인 중 오류 발생" , error ) ;
42- set ( { isLoggedIn : false , user : null } ) ;
23+ const fetchUserInfo = async ( set : any ) => {
24+ try {
25+ const userInfo = await getUserInfo ( ) ;
26+ if ( userInfo ) {
27+ set ( { user : userInfo } ) ;
28+ return true ;
4329 }
44- } ,
30+ } catch ( error ) {
31+ console . error ( "사용자 정보 가져오기 에러" , error ) ;
32+ }
33+ return false ;
34+ } ;
35+
36+ const useAuthStore = create < AuthStore > ( ) (
37+ persist (
38+ ( set ) => ( {
39+ user : null ,
4540
46- login : async ( body ) => {
47- try {
48- const { email, password } = body ;
49- const response = await postSignIn ( { email, password } ) ;
50- if ( response ) {
51- const userInfo = await getUserInfo ( ) ;
52- if ( userInfo ) {
53- set ( { isLoggedIn : true , user : userInfo } ) ;
54- return true ;
41+ login : async ( body ) => {
42+ try {
43+ const response = await postSignIn ( body ) ;
44+ if ( response ) {
45+ return await fetchUserInfo ( set ) ;
46+ }
47+ } catch ( error ) {
48+ console . error ( "로그인 중 에러가 발생했습니다" , error ) ;
5549 }
56- }
57- } catch ( error ) {
58- console . error ( "로그인 중 에러가 발생했습니다" , error ) ;
59- }
60- return false ;
61- } ,
50+ return false ;
51+ } ,
6252
63- SNSLogin : async ( provider , body ) => {
64- try {
65- const response = await postEasySignIn ( provider , body ) ;
66- if ( response ) {
67- const userInfo = await getUserInfo ( ) ;
68- if ( userInfo ) {
69- set ( { isLoggedIn : true , user : userInfo } ) ;
70- return true ;
53+ SNSLogin : async ( provider , body ) => {
54+ try {
55+ const response = await postEasySignIn ( provider , body ) ;
56+ if ( response ) {
57+ return await fetchUserInfo ( set ) ;
58+ }
59+ } catch ( error ) {
60+ console . error ( "소셜 로그인 중 에러가 발생했습니다." , error ) ;
7161 }
72- }
73- } catch ( error ) {
74- console . error ( "소셜 로그인 중 에러가 발생했습니다." , error ) ;
75- }
76- return false ;
77- } ,
62+ return false ;
63+ } ,
7864
79- logout : async ( ) => {
80- try {
81- await proxy . post ( "/api/auth/sign-out" ) ;
82- set ( { user : null , isLoggedIn : false } ) ;
83- } catch ( error ) {
84- console . error ( "로그아웃 중 에러가 발생했습니다." , error ) ;
85- }
86- } ,
87- } ) ) ;
65+ logout : async ( ) => {
66+ try {
67+ await proxy . post ( "/api/auth/sign-out" ) ;
68+ localStorage . removeItem ( "auth-storage" ) ;
69+ } catch ( error ) {
70+ console . error ( "로그아웃 중 에러가 발생했습니다." , error ) ;
71+ }
72+ } ,
73+ } ) ,
74+ { name : "auth-storage" }
75+ )
76+ ) ;
8877
8978export default useAuthStore ;
0 commit comments