Gnuboard5 Second Edition
그누보드5 SE 설정 관리 매뉴얼
문서
g5se 의 모던 admin 에서 사이트 설정 그룹을 한 곳에서 관리하는 페이지. 설정 그룹들이 카드 형태로 정리되며, 각 그룹의 세부 설정은 별도 매뉴얼 (하위 박스 참고) 에서 다룬다.
하위 매뉴얼:
개요
- URL:
/admin/setting(super-admin 만 접근) - 두 가지 모드:
- 목록 모드 (
/admin/setting) — 활성화된 설정 그룹 카드 + [⟳ 업데이트] 버튼 - 편집 모드 (
/admin/setting?key={그룹키}) — 단일 그룹의 필드 폼 + 저장 / 기본값으로 리셋
- 목록 모드 (
설계 원칙
| 개념 | 의미 |
|---|---|
| schema | 코드 (app/lib/setting.lib.php 의 SETTINGS_SCHEMA) 에 정의된 그룹·필드 구조 — "이 사이트가 지원할 수 있는 설정 그룹 카탈로그" |
| 활성 그룹 | DB (g5_setting 테이블) 에 row 가 있는 그룹 — "이 사이트가 실제 활성화한 그룹" |
| 목록 | 활성 그룹만 노출. schema 에만 있고 DB row 가 없는 그룹은 안 보임 |
| [⟳ 업데이트] 버튼 | schema 의 새 그룹을 활성화 (기본값으로 DB row INSERT) — 사용자 입력 값은 절대 안 건드림 |
이 구조 덕분에 새 release 가 들어와도 admin 이 의도적으로 [업데이트] 를 눌러야 새 그룹이 노출됨 — 자동 노출되지 않음.
화면 구성
목록 모드
─────────────────────────────────────────────────────────────
설정 관리 [⟳ 업데이트 (1개 그룹 추가 필요)]
─────────────────────────────────────────────────────────────
키 제목 설명 편집
─────────────────────────────────────────────────────────────
group_a 그룹 A 그룹 A 의 한 줄 설명… [편집]
group_b 그룹 B 그룹 B 의 한 줄 설명… [편집]
[⟳ 업데이트] 버튼은 schema 의 새 그룹 / 미생성 테이블이 있을 때만 노출된다. 모두 동기화된 상태에서는 안 보인다.
편집 모드
─────────────────────────────────────────────────
← 목록으로 그룹 제목
─────────────────────────────────────────────────
그룹 설명 한 줄.
📘 설정 가이드 보기 ▶
필드 1: [_____________________]
필드 2: [_____]
필드 3: [▾]
…
[저장] [기본값으로 리셋]
─────────────────────────────────────────────────
- 저장 — 입력값 검증 후 DB UPSERT. 비밀번호 타입 필드는 비어있으면 기존 값 유지.
- 기본값으로 리셋 — 해당 그룹의 DB row 자체 삭제. 다음 [⟳ 업데이트] 또는 [저장] 시 다시 default 로 활성화 가능.
- 📘 설정 가이드 보기 — 각 그룹별 설치 가이드 (그룹마다 별도 매뉴얼이 있을 수 있음 — 하위 매뉴얼 박스 참고).
새 release 받았을 때 흐름
- 새 코드 적용 —
SETTINGS_SCHEMA에 신규 그룹이 추가되어 들어옴 /admin/setting진입 → 우측 상단 [⟳ 업데이트 (N개 그룹 추가 필요)] 버튼 활성화- 클릭 → 확인 dialog → 진행
g5_setting테이블이 없으면 자동 CREATE- 새 그룹들이 default 값으로 INSERT
- toast 안내 — 어떤 그룹이 활성화됐는지 명시
- 목록에 새 그룹 카드 노출 → 편집해서 실제 값 입력
그룹 비활성화 (제거)
- 편집 모드 → [기본값으로 리셋] → DB row 삭제 → 목록에서 사라짐 (즉시)
- schema 자체에서 그룹을 빼면 → 다른 코드의
setting('그 키')호출은 try/catch 로 안전 fallback
보안
- super-admin 만 접근 (
$member['mb_id'] === $config['cf_admin']) - CSRF token 모든 state-changing POST 검증 (
get_admin_token/check_admin_token) - JSON 검증 — schema 의 필드 키와 타입 매칭, 잘못된 값은 저장 거부
- 비밀번호 필드는 폼에 마스크 표시. 빈 값 저장 시 기존 유지.
관련 파일
| 파일 | 역할 |
|---|---|
app/lib/setting.lib.php |
SETTINGS_SCHEMA 정의 + setting() / setting_put() / setting_sync() |
app/admin/setting.php |
목록·편집 UI + POST 액션 (save / reset / sync_schema) |
app/admin/db_migrate.php |
DB 마이그레이션 — g5_setting 관련은 다루지 않음 (단일 진입점은 setting [업데이트]) |
g5_setting 테이블 |
s_key (그룹키) / s_value (JSON 직렬화된 필드 dict) / s_updated |
새 설정 그룹 추가 (개발자)
app/lib/setting.lib.php 의 SETTINGS_SCHEMA 배열에 항목 추가:
'group_key' => [
'title' => '그룹 제목',
'description' => '간단한 설명 (목록 카드에 노출)',
'notes' => <<<HTML
<h4>설치 가이드 (HTML 허용)</h4>
<p>...</p>
HTML,
'fields' => [
'field_key' => [
'label' => '필드 라벨',
'type' => 'text', // text | number | select | bool | password
'default' => '',
'required' => false,
'help' => '인풋 옆 안내',
],
],
],
코드 배포 → 사이트 admin 이 [⟳ 업데이트] 한 번 → 활성화 완료. DB 마이그레이션 SQL 별도 작성 불필요.