@@ -4,107 +4,118 @@ import '../styles/AuthUserPage.css';
44import Header from '../components/Header' ;
55import { useAuth } from '../context/AuthContext' ;
66
7+ // AuthUserPage 컴포넌트: 관리자 권한이 있는 사용자만 접근 가능한 페이지
78function AuthUserPage ( ) {
8- const { isLoading, decodedAuth } = useAuth ( ) ;
9- const navigate = useNavigate ( ) ;
10- const [ users , setUsers ] = useState ( [ ] ) ;
11- const [ error , setError ] = useState ( null ) ;
9+ const { isLoading, decodedAuth } = useAuth ( ) ; // AuthContext에서 로딩 상태와 사용자 권한 정보 가져오기
10+ const navigate = useNavigate ( ) ; // 페이지 이동을 위한 useNavigate 훅
11+ const [ users , setUsers ] = useState ( [ ] ) ; // 사용자 목록을 저장하는 상태
12+ const [ error , setError ] = useState ( null ) ; // 에러 메시지를 저장하는 상태
1213
14+ // 컴포넌트 마운트 및 업데이트 시 실행되는 useEffect 훅
1315 useEffect ( ( ) => {
14- // Check authorization
16+ // 권한 확인: 로딩이 완료되고 사용자가 ADMIN이 아닌 경우 홈으로 리디렉션
1517 if ( ! isLoading && decodedAuth !== 'ADMIN' ) {
1618 navigate ( '/' ) ;
1719 }
1820
19- // Fetch all users from API across all pages
21+ // 모든 사용자 데이터를 API에서 가져오는 함수
2022 const fetchAllUsers = async ( ) => {
2123 try {
22- let allUsers = [ ] ;
23- let page = 0 ;
24- let totalPages = 1 ;
24+ let allUsers = [ ] ; // 모든 사용자 데이터를 저장할 배열
25+ let page = 0 ; // 현재 페이지 번호
26+ let totalPages = 1 ; // 총 페이지 수
2527
28+ // 모든 페이지를 순회하며 사용자 데이터 가져오기
2629 while ( page < totalPages ) {
30+ // API 호출: 페이지와 페이지당 데이터 수를 쿼리 파라미터로 전달
2731 const response = await fetch ( `${ import . meta. env . VITE_ALL_USER_LIST } ?page=${ page } &size=10` , {
2832 headers : {
29- 'Content-Type' : 'application/json'
33+ 'Content-Type' : 'application/json' // 요청 헤더 설정
3034 }
3135 } ) ;
3236
37+ // 응답이 실패하면 에러 발생
3338 if ( ! response . ok ) {
34- throw new Error ( 'Failed to fetch users ' ) ;
39+ throw new Error ( '사용자 데이터를 가져오지 못했습니다. ' ) ;
3540 }
3641
37- const data = await response . json ( ) ;
42+ const data = await response . json ( ) ; // 응답 데이터를 JSON으로 파싱
43+ // 사용자 데이터를 필요한 필드만 추출하여 매핑
3844 const mappedUsers = data . content . map ( user => ( {
3945 userId : user . userId ,
4046 userName : user . userName
4147 } ) ) ;
4248
49+ // 기존 사용자 배열에 새로 가져온 사용자 데이터 추가
4350 allUsers = [ ...allUsers , ...mappedUsers ] ;
44- totalPages = data . totalPages ;
45- page ++ ;
51+ totalPages = data . totalPages ; // 총 페이지 수 업데이트
52+ page ++ ; // 다음 페이지로 이동
4653 }
4754
48- setUsers ( allUsers ) ;
55+ setUsers ( allUsers ) ; // 사용자 목록 상태 업데이트
4956 } catch ( err ) {
50- setError ( err . message ) ;
57+ setError ( err . message ) ; // 에러 발생 시 에러 메시지 저장
5158 }
5259 } ;
5360
61+ // 로딩이 완료된 경우에만 사용자 데이터 가져오기
5462 if ( ! isLoading ) {
5563 fetchAllUsers ( ) ;
5664 }
57- } , [ isLoading , decodedAuth , navigate ] ) ;
65+ } , [ isLoading , decodedAuth , navigate ] ) ; // 의존성 배열: isLoading, decodedAuth, navigate 변경 시 재실행
5866
67+ // 로딩 중일 때 표시되는 UI
5968 if ( isLoading ) {
6069 return (
6170 < >
62- < Header />
71+ < Header /> { /* 헤더 컴포넌트 렌더링 */ }
6372 < main className = "auth-user-page" >
6473 < section className = "auth-user-section" >
65- < p > 로딩 중...</ p >
74+ < p > 로딩 중...</ p > { /* 로딩 메시지 표시 */ }
6675 </ section >
6776 </ main >
6877 </ >
6978 ) ;
7079 }
7180
81+ // 에러 발생 시 표시되는 UI
7282 if ( error ) {
7383 return (
7484 < >
75- < Header />
85+ < Header /> { /* 헤더 컴포넌트 렌더링 */ }
7686 < main className = "auth-user-page" >
7787 < section className = "auth-user-section" >
78- < p > Error : { error } </ p >
88+ < p > 에러 : { error } </ p > { /* 에러 메시지 표시 */ }
7989 </ section >
8090 </ main >
8191 </ >
8292 ) ;
8393 }
8494
95+ // 정상적으로 사용자 목록을 렌더링하는 UI
8596 return (
8697 < >
87- < Header />
98+ < Header /> { /* 헤더 컴포넌트 렌더링 */ }
8899 < main className = "auth-user-page" >
89100 < section className = "auth-user-section" >
90- < p className = "user-list-title" > User List </ p >
101+ < p className = "user-list-title" > 사용자 목록 </ p > { /* 사용자 목록 제목 */ }
91102
92- { /* 헤더 */ }
103+ { /* 사용자 목록 헤더 */ }
93104 < div className = "user-list-header" >
94- < span > UserName </ span >
95- < span > UserID </ span >
105+ < span > 사용자 이름 </ span >
106+ < span > 사용자 ID </ span >
96107 </ div >
97108
98- { /* 스크롤 가능한 목록 */ }
109+ { /* 스크롤 가능한 사용자 목록 */ }
99110 < ul className = "user-list-scroll" >
100111 { users . map ( ( user ) => (
101112 < li
102- key = { user . userId }
113+ key = { user . userId } // 각 사용자 항목의 고유 키
103114 className = "user-list-item"
104- onClick = { ( ) => navigate ( `/Data?user=${ user . userId } ` ) }
115+ onClick = { ( ) => navigate ( `/Data?user=${ user . userId } ` ) } // 클릭 시 해당 사용자 데이터 페이지로 이동
105116 >
106- < span > { user . userName } </ span >
107- < span > { user . userId } </ span >
117+ < span > { user . userName } </ span > { /* 사용자 이름 표시 */ }
118+ < span > { user . userId } </ span > { /* 사용자 ID 표시 */ }
108119 </ li >
109120 ) ) }
110121 </ ul >
@@ -114,4 +125,4 @@ function AuthUserPage() {
114125 ) ;
115126}
116127
117- export default AuthUserPage ;
128+ export default AuthUserPage ; // 컴포넌트 내보내기
0 commit comments