Skip to content

Commit 22e3246

Browse files
authored
Merge pull request #112 from codeit9-temporary/feature/AuthStore
Fix:로그아웃 시, 사용 도중 쿠키 만료 시 user정보 초기화
2 parents 819ee33 + 1294320 commit 22e3246

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

components/HeaderMenu.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import Link from "next/link";
55
import SubmitButton from "./SubMitButton";
66
import { useRouter } from "next/router";
77
import useAuthStore from "@/store/useAuthStore";
8-
import { useRef, useState } from "react";
8+
import { useEffect, useRef, useState } from "react";
99
import Dropdown from "./Dropdown";
1010
import useOutsideClick from "@/hooks/useOutsideClick";
1111

1212
const HeaderMenu = () => {
13-
const { user, logout } = useAuthStore();
13+
const { user, logout, fetchUserInfo } = useAuthStore();
1414
const [isOpen, setIsOpen] = useState(false);
1515
const router = useRouter();
1616
const dropdownRef = useRef<HTMLDivElement | null>(null);
@@ -19,6 +19,10 @@ const HeaderMenu = () => {
1919
setIsOpen(false);
2020
});
2121

22+
useEffect(() => {
23+
fetchUserInfo();
24+
}, [fetchUserInfo]);
25+
2226
const dropdownItems = [
2327
{
2428
label: "마이링크",

lib/api/axiosInstanceApi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const axiosInstance = axios.create({
66

77
export const proxy = axios.create({
88
// 배포 이후에는 배포된 URL로 변경해야 함.
9-
baseURL: "https://linkbrary-9-99.vercel.app",
9+
baseURL: "http://localhost:3000",
1010
});
1111

1212
proxy.interceptors.response.use(

store/useAuthStore.tsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ import { persist } from "zustand/middleware";
1212

1313
interface AuthStore {
1414
user: User | null;
15+
fetchUserInfo: () => Promise<boolean>;
1516
login: (body: signInProps) => Promise<boolean>;
16-
SNSLogin: (
17-
provider: "google" | "kakao",
18-
body: easySignInProps
19-
) => Promise<boolean>;
2017
logout: () => Promise<void>;
2118
}
2219

@@ -38,32 +35,40 @@ const useAuthStore = create<AuthStore>()(
3835
(set) => ({
3936
user: null,
4037

41-
login: async (body) => {
38+
// 사용자 정보 가져오기 함수
39+
fetchUserInfo: async () => {
4240
try {
43-
const response = await postSignIn(body);
44-
if (response) {
45-
return await fetchUserInfo(set);
41+
const userInfo = await getUserInfo();
42+
if (userInfo) {
43+
set({ user: userInfo });
44+
return true;
45+
} else {
46+
set({ user: null });
47+
return false;
4648
}
4749
} catch (error) {
48-
console.error("로그인 중 에러가 발생했습니다", error);
50+
console.error("사용자 정보 가져오기 에러", error);
4951
}
5052
return false;
5153
},
5254

53-
SNSLogin: async (provider, body) => {
55+
// 로그인 함수
56+
login: async (body) => {
5457
try {
55-
const response = await postEasySignIn(provider, body);
58+
const response = await postSignIn(body);
5659
if (response) {
5760
return await fetchUserInfo(set);
5861
}
5962
} catch (error) {
60-
console.error("소셜 로그인 중 에러가 발생했습니다.", error);
63+
console.error("로그인 중 에러가 발생했습니다", error);
6164
}
6265
return false;
6366
},
6467

68+
// 로그아웃 함수
6569
logout: async () => {
6670
try {
71+
set({ user: null });
6772
await proxy.post("/api/auth/sign-out");
6873
localStorage.removeItem("auth-storage");
6974
} catch (error) {

0 commit comments

Comments
 (0)