Skip to content

Commit 27f87b6

Browse files
committed
refactor: 토큰을 기준으로 로그인 기준 처리
1 parent 839e240 commit 27f87b6

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

src/common/component/UserModal/UserModal.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const UserModal = ({ onClose }: UserModalProps) => {
2929
const handleLogout = () => {
3030
logoutMutate(undefined, {
3131
onSuccess: () => {
32-
localStorage.removeItem('accessToken');
3332
resetUser();
3433
onClose();
3534
navigate(PATH.ROOT);

src/store/types/authTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ export interface AuthStoreType {
1818
isLoggedIn: boolean;
1919
setUser: (newUser: UserType) => void;
2020
resetUser: () => void;
21+
updateLoginStatus: () => void;
2122
}

src/store/useAuthStore.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,31 @@ const defaultUser: UserType = {
88
email: '',
99
profileImageUrl: '',
1010
};
11-
const token = localStorage.getItem('accessToken');
11+
const getToken = () => localStorage.getItem('accessToken');
1212

1313
export const useAuthStore = create<AuthStoreType>()(
1414
persist(
1515
(set) => ({
1616
user: defaultUser,
17-
isLoggedIn: !!token,
18-
setUser: (newUser) => set({ user: newUser, isLoggedIn: true }),
19-
resetUser: () => set({ user: defaultUser, isLoggedIn: false }),
17+
isLoggedIn: false,
18+
setUser: (newUser) => set({ user: newUser, isLoggedIn: !!getToken() }),
19+
resetUser: () => {
20+
localStorage.removeItem('accessToken');
21+
set({ user: defaultUser, isLoggedIn: false });
22+
},
23+
updateLoginStatus: () => set({ isLoggedIn: !!getToken() }),
2024
}),
2125
{
2226
name: 'auth-storage',
27+
partialize: (state) => ({ user: state.user }),
28+
onRehydrateStorage: () => (state) => {
29+
state?.updateLoginStatus();
30+
},
2331
storage: createJSONStorage(() => ({
2432
getItem: (name) => localStorage.getItem(name),
2533
setItem: (name, value) => {
26-
const { state } = JSON.parse(value) as { state: AuthStoreType };
27-
if (!state.isLoggedIn) {
34+
const hasToken = !!getToken();
35+
if (!hasToken) {
2836
localStorage.removeItem(name);
2937
return;
3038
}

0 commit comments

Comments
 (0)