Files
Aislo/docs/wiki/pages/A09_Security/A09_frontend.md
T
2026-07-15 18:33:33 +09:00

4.0 KiB

status, page_id, related_pages, last_updated
status page_id related_pages last_updated
stable A09_Security
A09_Security/A09_backend
A06_Login/A06_frontend
auth_rbac
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 계획서 기준으로 작성됨 (실 정책 검증 후 갱신 필요).

의존성