관리자 기능 개발
관리자 UI와 API의 인증, 상태 파일, 캐시·설치 작업 경계를 설명합니다.
관리자 기능 개발
API 구조
admin/api.php→api.core.php: 인증 모드, 상태·설정·플러그인·툴바·라이선스·캐시·시스템 정보와 독립 환경 비밀번호environment_api.php: 로컬 환경과 네트워크 상태update_api.php: 소스, 확인, 계획, 적용, rollback과 백업third_party_api.php: 마켓, 카탈로그, 상세, 리뷰, 설치와 제거runtime_config.php: 에디터 페이지가 읽는 공개·읽기 전용 런타임 설정
각 공개 PHP는 불변 래퍼이며 t2_extend_endpoint_target()이 선택 runtime의 같은 상대 .core.php 또는 base 구현을 고른다.
보안 규칙
- 관리자 세션과 CSRF를 공통으로 확인한다.
- 민감 설치 작업은
t2editor_admin_verify_local_or_cms()계열 경계로 재승인한다. CMS 환경은 adapter의 관리자 세션을, 독립 환경만password_verify()기반 로컬 자격 증명을 사용한다. - action은 allowlist로 분기하고 알 수 없는 action을 거부한다.
- 경로 작업은 허용 루트 내부인지 확인하고 루트 자체 삭제와 symlink 추적을 금지한다.
- API 오류는 JSON으로 반환하되 비밀번호 해시·파일 시스템 비밀 경로를 불필요하게 노출하지 않는다.
상태 저장
독립 환경의 관리자 인증 정보와 공통 설정·마켓·설치 레지스트리는 T2EDITOR_PRIVATE_PATH 아래 PHP-wrapped private store에 원자적으로 기록한다. CMS 관리자 세션 자체는 복제해 저장하지 않고 adapter가 요청마다 판정한다. 공개 자산과 같은 폴더에 JSON 평문으로 쓰지 않는다. runtime_config.php는 필요한 공개 설정만 투영하며 비밀값을 내보내지 않는다.
새 기능 추가 순서
- 읽기와 쓰기 action, 권한, CSRF, 재인증 여부를 먼저 정의한다.
- 입력 길이·형식·열거값을 서버에서 검증한다.
- 상태 파일 또는 캐시의 소유권과 rollback 방법을 정한다.
- UI는 API의 확정 응답 뒤에만 성공 상태를 표시한다.
- base와 선택 runtime, 그누보드5·라이믹스·독립 경로에서 시험한다.
10.5.0 기준 변경점
관리자 인증은 config/t2_cms_auth.php와 각 adapter capability를 통해 판정한다. 업데이트 API는 현재 메이저 추천 계산, 다른 메이저 분리 목록, 계획 단계와 적용 단계의 위험 확인값을 모두 서버에서 검증한다. 환경 API는 ZipArchive·zlib·브라우저 보조 모드를 구분하고, 브라우저 해제 파일은 원본 ZIP 메타데이터와 재검증한다. 관리자 진입 링크는 권한 판정이 끝난 뒤에만 렌더한다.