Skip to content

Commit

Permalink
Merge branch 'develop' into page
Browse files Browse the repository at this point in the history
  • Loading branch information
kangjuhyup committed Jan 21, 2025
2 parents 760c992 + d08ce0b commit bb74617
Showing 1 changed file with 43 additions and 40 deletions.
83 changes: 43 additions & 40 deletions packages/page/src/common/login.provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,54 +10,57 @@ export const LoginProvider = ({ children }: { children: ReactNode }) => {
const router = useRouter();
const store = useLoginStore();

useEffect(() => {
if (!router.isReady) return;
const checkAccessToken = () => {
if (router.pathname === '/page/login' || router.query.isView === 'true') {
return;
} else {
const { access } = store;
if (!access) {
console.error('로그인되지 않았습니다.');
router.replace('/page/login');
return;
}

try {
const tokenData = JSON.parse(atob(access.split('.')[1]));
const expirationTime = tokenData.exp * 1000; // Convert to milliseconds
const currentTime = new Date().getTime();

if (currentTime >= expirationTime) {
store.clearToken();
router.replace('/page/login');
}
} catch (error) {
store.clearToken();
router.replace('/page/login');
}
}
};
const validateAccessToken = () => {
const { access } = store;

checkAccessToken();
const intervalId = setInterval(checkAccessToken, 30000); // Check every 30 seconds
if (router.pathname === '/page/login' || router.query.isView === 'true') {
return;
}

return () => clearInterval(intervalId);
}, [router, store]);
if (!access) {
console.error('로그인되지 않았습니다.');
store.clearToken();
router.replace('/page/login');
return;
}

useEffect(() => {
const { access } = store;
try {
const tokenData = JSON.parse(atob(access.split('.')[1]));
const expirationTime = tokenData.exp * 1000; // Convert to milliseconds
const currentTime = Date.now();

if (
!access &&
router.pathname !== '/page/login' &&
router.query.isView !== 'true'
) {
if (currentTime >= expirationTime) {
console.warn('토큰이 만료되었습니다.');
store.clearToken();
router.replace('/page/login');
}
} catch (error) {
console.error('토큰 파싱 중 오류 발생:', error);
store.clearToken();
router.replace('/page/login');
}
}, [store.access, router]);
};

useEffect(() => {
if (!router.isReady) return;

validateAccessToken();

// 30초마다 토큰 검증
const intervalId = setInterval(validateAccessToken, 30000);

return () => clearInterval(intervalId);
}, [router.isReady, store.access]);

return (
<LoginContext.Provider value={store}>{children}</LoginContext.Provider>
);
};

export const useLoginContext = () => {
const context = useContext(LoginContext);
if (!context) {
throw new Error('useLoginContext must be used within a LoginProvider');
}
return context;
};

0 comments on commit bb74617

Please sign in to comment.