Skip to content

Commit 5ef96c3

Browse files
Merge pull request #84 from SSASINSA/refactor/sprint-fix(#68)
#68/새로고침 에러 수정
2 parents 30a0593 + ff48b9b commit 5ef96c3

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

src/components/common/ProtectedRoute.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ const ProtectedRoute: React.FC<ProtectedRouteProps> = ({ children, allowedRoles
1717
return <Navigate to="/login" replace />;
1818
}
1919

20-
// role 로딩 중일 때는 대기
20+
// role 로딩 중일 때는 대기 (권한 체크 전에)
2121
if (isLoading) {
2222
return <div>로딩 중...</div>;
2323
}
2424

25-
// allowedRoles가 지정된 경우 role 체크
25+
// allowedRoles가 지정된 경우 role 체크 (로딩 완료 후에만)
2626
if (allowedRoles && allowedRoles.length > 0) {
2727
if (!role || !allowedRoles.includes(role)) {
2828
// 권한이 없으면 대시보드로 리다이렉트

src/contexts/AuthContext.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ interface RoleResponse {
1919

2020
export const AuthProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
2121
const [role, setRole] = useState<AdminRole>(null);
22-
const [isLoading, setIsLoading] = useState<boolean>(false);
22+
const [isLoading, setIsLoading] = useState<boolean>(true);
2323

2424
const fetchRole = useCallback(async () => {
2525
if (!authUtils.isAuthenticated()) {
2626
setRole(null);
27+
setIsLoading(false);
2728
return;
2829
}
2930

@@ -54,13 +55,16 @@ export const AuthProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
5455
setRole(null);
5556
}, []);
5657

58+
// 초기 마운트 시 role 로드
5759
useEffect(() => {
58-
if (authUtils.isAuthenticated() && !role) {
60+
if (authUtils.isAuthenticated()) {
5961
fetchRole();
60-
} else if (!authUtils.isAuthenticated()) {
62+
} else {
6163
setRole(null);
64+
setIsLoading(false);
6265
}
63-
}, [role, fetchRole]);
66+
// eslint-disable-next-line react-hooks/exhaustive-deps
67+
}, []);
6468

6569
useEffect(() => {
6670
const handleTokenExpired = () => {

0 commit comments

Comments
 (0)