관리자 기능 개발
관리자 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를 공통으로 확인한다.
- 민감 설치 작업은
password_verify()로 로컬 비밀번호를 재검증한다. - action은 allowlist로 분기하고 알 수 없는 action을 거부한다.
- 경로 작업은 허용 루트 내부인지 확인하고 루트 자체 삭제와 symlink 추적을 금지한다.
- API 오류는 JSON으로 반환하되 비밀번호 해시·파일 시스템 비밀 경로를 불필요하게 노출하지 않는다.
상태 저장
관리자 인증, 설정, 마켓, 설치 레지스트리는 T2EDITOR_PRIVATE_PATH 아래 PHP-wrapped private store에 원자적으로 기록한다. 공개 자산과 같은 폴더에 JSON 평문으로 쓰지 않는다. runtime_config.php는 필요한 공개 설정만 투영하며 비밀값을 내보내지 않는다.
새 기능 추가 순서
- 읽기와 쓰기 action, 권한, CSRF, 재인증 여부를 먼저 정의한다.
- 입력 길이·형식·열거값을 서버에서 검증한다.
- 상태 파일 또는 캐시의 소유권과 rollback 방법을 정한다.
- UI는 API의 확정 응답 뒤에만 성공 상태를 표시한다.
- base와 선택 runtime, 그누보드5·라이믹스·독립 경로에서 시험한다.