4.0 KiB
4.0 KiB
status, page_id, related_pages, last_updated
| status | page_id | related_pages | last_updated | |||
|---|---|---|---|---|---|---|
| stable | A09_Security |
|
2026-07-12 |
A09_Security — Frontend
보안·약관 열람 페이지. 이용약관/개인정보/세션 보안정책 텍스트를 버전과 함께 표시.
파일 구조
| 파일 | 위치 | 역할 |
|---|---|---|
A09_Security_UI_Page.ts |
A09_Security/A09_Security_UI_Page.ts:1-30 |
실사용 약관 열람 페이지 렌더링 |
A09_Security_Terms.ts |
A09_Security/A09_Security_Terms.ts:1-16 |
약관 텍스트 데이터(한/영), 버전 상수 |
A09_Security_UI_Style.css |
A09_Security/A09_Security_UI_Style.css:1-14 |
스타일 (theme.css 변수만 사용) |
A09_Security_Api_Fetch.ts |
A09_Security/A09_Security_Api_Fetch.ts:1-61 |
⚠️ API 클라이언트 (정의만, 미사용 — 아래 참고) |
⚠️ 프론트/백엔드 기능 불일치:
A09_Security_UI_Page.ts는 약관 텍스트 열람만 하며A09_Security_Api_Fetch.ts를 import하지 않는다. API 클라이언트(마스터/관리자 8함수)는 정의만 되고 어디서도 사용되지 않음(grep 확인). 백엔드 API(/api/security)는 완비돼 있으나 프론트 연동 미완.
컴포넌트 / 함수
| 함수 | 위치 | 역할 |
|---|---|---|
renderA09Security(root) |
A09_Security/A09_Security_UI_Page.ts:7 |
제목+버전+3개 약관 섹션 렌더 |
약관 데이터 (A09_Security_Terms.ts)
| 항목 | 위치 | 내용 |
|---|---|---|
SECURITY_TERMS_VERSION |
A09_Security/A09_Security_Terms.ts:1 |
약관 버전 상수 "1.0" |
securityTerms.terms |
A09_Security/A09_Security_Terms.ts:4 |
이용약관(한/영) |
securityTerms.privacy |
A09_Security/A09_Security_Terms.ts:8 |
개인정보(한/영, "IP 미수집" 명시) |
securityTerms.security |
A09_Security/A09_Security_Terms.ts:12 |
세션 보안정책(한/영) |
API 클라이언트 함수 (⚠️ 미사용, 정의만)
| 함수 | 위치 | 대응 API |
|---|---|---|
getMasterDashboard() |
A09_Security/A09_Security_Api_Fetch.ts:14 |
GET /security/master/dashboard |
getMembers() |
A09_Security/A09_Security_Api_Fetch.ts:18 |
GET /security/master/members |
getJoinRequests() |
A09_Security/A09_Security_Api_Fetch.ts:22 |
GET /security/master/join-requests |
decideJoinRequest(id, approved, comment?) |
A09_Security/A09_Security_Api_Fetch.ts:26 |
POST .../join-requests/{id}/decision |
removeMember(userId) |
A09_Security/A09_Security_Api_Fetch.ts:37 |
POST .../members/{id}/remove |
getAdminDashboard() |
A09_Security/A09_Security_Api_Fetch.ts:41 |
GET /security/admin/dashboard |
getAdminCollection(collection) |
A09_Security/A09_Security_Api_Fetch.ts:45 |
GET /security/admin/{collection} |
updateAdminStatus(entity, id, status, reason) |
A09_Security/A09_Security_Api_Fetch.ts:51 |
PATCH /security/admin/{entity}/{id}/status |
로컬라이제이션
모든 텍스트는 ui_templates에서 로드. 하드코딩 금지.
| UI 요소 | 로케일 키 |
|---|---|
| 제목/버전 | A09_Security_Title, A09_Security_Version |
| 섹션 제목 | A09_Security_Terms, A09_Security_Privacy, A09_Security_Policy |
- 약관 본문은 로케일이 아닌
A09_Security_Terms.ts에 한/영 배열로 별도 관리([currentLanguageIndex]로 선택)
스타일 (CSS)
.a09-security— 문서 컨테이너(max-width 800px, surface 배경, border).a09-security section— 섹션 간격(margin-top: spacing-32)
⚠️ 약관 텍스트와 실 코드 불일치
securityTerms.security는 "세션 12시간 또는 4시간 비활동 후 만료"로 안내하나,
A06 실 코드는 auth_expires_at = NOW() + 3개월 방식 → A06_Login/A06_backend 참고.
약관 텍스트도 auth_rbac 계획서 기준으로 작성됨 (실 정책 검증 후 갱신 필요).
의존성
- ui_templates —
ui_locales,currentLanguageIndex(다국어) - 백엔드 API(미연동) → A09_Security/A09_backend