docs: add project docs and test updates
This commit is contained in:
16
docs/완료된_개발_내역/관리자단/01-필터.md
Normal file
16
docs/완료된_개발_내역/관리자단/01-필터.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 관리자단 — 필터
|
||||
|
||||
## AdminAuthFilter
|
||||
|
||||
- **파일**: `app/Filters/AdminAuthFilter.php`
|
||||
- **등록**: `app/Config/Filters.php` → `'adminAuth' => \App\Filters\AdminAuthFilter::class`
|
||||
|
||||
### 동작
|
||||
|
||||
1. **로그인 여부**: `session()->get('logged_in')`이 없으면 → `site_url('login')`으로 리다이렉트, 플래시 `error` "로그인이 필요합니다."
|
||||
2. **권한**: `session()->get('mb_level')`이 **3**(`Roles::LEVEL_LOCAL_ADMIN`) 또는 **4**(`Roles::LEVEL_SUPER_ADMIN`)이 아니면 → `site_url('/')`로 리다이렉트, 플래시 `error` "관리자만 접근할 수 있습니다."
|
||||
3. 통과 시 `before()`는 `null` 반환하여 다음 처리 진행.
|
||||
|
||||
### 적용 범위
|
||||
|
||||
- `app/Config/Routes.php`의 `admin` 그룹 전체에 `'filter' => 'adminAuth'`로 적용됨.
|
||||
25
docs/완료된_개발_내역/관리자단/02-라우트.md
Normal file
25
docs/완료된_개발_내역/관리자단/02-라우트.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# 관리자단 — 라우트
|
||||
|
||||
## 정의 위치
|
||||
|
||||
`app/Config/Routes.php` — `$routes->group('admin', ['filter' => 'adminAuth'], ...)`
|
||||
|
||||
## 목록
|
||||
|
||||
| Method | URI | Handler | 비고 |
|
||||
|--------|-----|---------|------|
|
||||
| GET | `/admin` | `Admin\Dashboard::index` | 대시보드 |
|
||||
| GET | `/admin/users` | `Admin\User::index` | 회원 목록 |
|
||||
| GET | `/admin/users/create` | `Admin\User::create` | 회원 등록 폼 |
|
||||
| POST | `/admin/users/store` | `Admin\User::store` | 회원 등록 처리 |
|
||||
| GET | `/admin/users/edit/(:num)` | `Admin\User::edit/$1` | 회원 수정 폼 |
|
||||
| POST | `/admin/users/update/(:num)` | `Admin\User::update/$1` | 회원 수정 처리 |
|
||||
| POST | `/admin/users/delete/(:num)` | `Admin\User::delete/$1` | 회원 탈퇴 처리 |
|
||||
| GET | `/admin/access/login-history` | `Admin\Access::loginHistory` | 로그인 이력(기간 조회) |
|
||||
| GET | `/admin/access/approvals` | `Admin\Access::approvals` | 권한 승인 대기 목록 |
|
||||
| POST | `/admin/access/approve/(:num)` | `Admin\Access::approve/$1` | 권한 승인(플레이스홀더) |
|
||||
| POST | `/admin/access/reject/(:num)` | `Admin\Access::reject/$1` | 권한 반려(플레이스홀더) |
|
||||
| GET | `/admin/roles` | `Admin\Role::index` | 역할 목록(Config\Roles) |
|
||||
| GET | `/admin/menus` | `Admin\Menu::index` | 메뉴 관리(플레이스홀더) |
|
||||
|
||||
모든 위 라우트에 `adminAuth` 필터가 before/after로 적용됨.
|
||||
59
docs/완료된_개발_내역/관리자단/03-컨트롤러.md
Normal file
59
docs/완료된_개발_내역/관리자단/03-컨트롤러.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 관리자단 — 컨트롤러
|
||||
|
||||
## 공통
|
||||
|
||||
- 네임스페이스: `App\Controllers\Admin`
|
||||
- 모든 응답은 `admin/layout`으로 감싸서 `title`, `content` 전달. 본문은 하위 뷰에서 렌더.
|
||||
|
||||
---
|
||||
|
||||
## Dashboard
|
||||
|
||||
- **파일**: `app/Controllers/Admin/Dashboard.php`
|
||||
- **메서드**: `index()` — 대시보드 뷰만 표시.
|
||||
|
||||
---
|
||||
|
||||
## User (회원 관리)
|
||||
|
||||
- **파일**: `app/Controllers/Admin/User.php`
|
||||
- **의존**: `MemberModel`, `Config\Roles`
|
||||
|
||||
| 메서드 | 역할 |
|
||||
|--------|------|
|
||||
| `index()` | 회원 목록 (목록 뷰 + roles) |
|
||||
| `create()` | 회원 등록 폼 |
|
||||
| `store()` | 등록 처리: 유효성 검사 → 비밀번호 해시 → insert, redirect `admin/users` |
|
||||
| `edit($id)` | 수정 폼 (회원 없으면 redirect) |
|
||||
| `update($id)` | 수정 처리: 유효성(비밀번호 선택), mb_state 포함, redirect `admin/users` |
|
||||
| `delete($id)` | 탈퇴 처리: `mb_state=0`, `mb_leavedate` 설정 후 redirect (물리 삭제 없음) |
|
||||
|
||||
- 삭제는 **탈퇴 처리**만 수행. 5년 유지 정책은 별도 스케줄/정책으로 구현 예정.
|
||||
|
||||
---
|
||||
|
||||
## Access (접근 관리)
|
||||
|
||||
- **파일**: `app/Controllers/Admin/Access.php`
|
||||
- **의존**: `MemberLogModel`
|
||||
|
||||
| 메서드 | 역할 |
|
||||
|--------|------|
|
||||
| `loginHistory()` | GET `start`/`end` 기간으로 로그 이력 조회, 뷰에 list/start/end 전달 |
|
||||
| `approvals()` | 권한 승인 대기 목록 (현재 빈 목록, 추후 테이블 연동) |
|
||||
| `approve($id)` | 승인 처리 플레이스홀더 (redirect + success) |
|
||||
| `reject($id)` | 반려 처리 플레이스홀더 (redirect + success) |
|
||||
|
||||
---
|
||||
|
||||
## Role (역할)
|
||||
|
||||
- **파일**: `app/Controllers/Admin/Role.php`
|
||||
- **메서드**: `index()` — `Config\Roles`의 `levelNames` 목록만 뷰에 전달. (role 테이블 미사용, 추후 확장 가능)
|
||||
|
||||
---
|
||||
|
||||
## Menu (메뉴)
|
||||
|
||||
- **파일**: `app/Controllers/Admin/Menu.php`
|
||||
- **메서드**: `index()` — 메뉴 관리 안내 뷰만 표시. (menu·menu_permission 테이블 연동은 추후)
|
||||
29
docs/완료된_개발_내역/관리자단/04-뷰.md
Normal file
29
docs/완료된_개발_내역/관리자단/04-뷰.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# 관리자단 — 뷰
|
||||
|
||||
## 공통 레이아웃
|
||||
|
||||
- **파일**: `app/Views/admin/layout.php`
|
||||
- **역할**: 공통 HTML·Tailwind, 좌측 사이드바(대시보드/회원/로그인이력/승인대기/역할/메뉴 링크), 플래시(success/error/errors) 표시, `<?= $content ?>`로 본문 출력.
|
||||
- **변수**: `$title`, `$content` (본문은 각 컨트롤러에서 `view('admin/...')`로 렌더 후 전달)
|
||||
|
||||
---
|
||||
|
||||
## 디렉터리·파일
|
||||
|
||||
| 경로 | 역할 |
|
||||
|------|------|
|
||||
| `admin/dashboard/index.php` | 대시보드 본문 |
|
||||
| `admin/user/index.php` | 회원 목록 테이블(수정/삭제 링크) |
|
||||
| `admin/user/create.php` | 회원 등록 폼 (mb_id, mb_passwd, mb_name, mb_email, mb_phone, mb_level) |
|
||||
| `admin/user/edit.php` | 회원 수정 폼 (비밀번호 변경 선택, mb_state 포함) |
|
||||
| `admin/access/login_history.php` | 기간(start/end) 조회 폼 + 로그인 이력 테이블 |
|
||||
| `admin/access/approvals.php` | 권한 승인 대기 안내·테이블(현재 빈 목록) |
|
||||
| `admin/role/index.php` | Config\Roles levelNames 테이블 |
|
||||
| `admin/menu/index.php` | 메뉴 관리 안내 문구 |
|
||||
|
||||
---
|
||||
|
||||
## 뷰 규칙 (개발 규칙 준수)
|
||||
|
||||
- 출력: `esc()`, 링크: `base_url()`, 폼: `csrf_field()`, 복원: `old()`
|
||||
- 플래시: layout에서 `success`, `error`, `errors` 표시
|
||||
19
docs/완료된_개발_내역/관리자단/05-사용방법_확장예정.md
Normal file
19
docs/완료된_개발_내역/관리자단/05-사용방법_확장예정.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# 관리자단 — 사용 방법 및 확장 예정
|
||||
|
||||
## 사용 방법
|
||||
|
||||
1. **관리자 계정**: DB `member` 테이블에서 해당 회원의 `mb_level`을 **3**(지자체관리자) 또는 **4**(super admin)으로 설정.
|
||||
2. **접속**: 해당 계정으로 로그인 후 `/admin` 접속.
|
||||
3. **회원 관리**: 등록/수정/삭제(탈퇴 처리). 삭제는 물리 삭제 없이 `mb_state=0`, `mb_leavedate` 기록.
|
||||
4. **로그인 이력**: `/admin/access/login-history`에서 쿼리 파라미터 `start`, `end`(날짜)로 기간 조회.
|
||||
|
||||
---
|
||||
|
||||
## 확장 예정
|
||||
|
||||
| 항목 | 현재 | 추후 |
|
||||
|------|------|------|
|
||||
| **권한 승인** | 승인 대기·승인/반려 플레이스홀더 | 권한 승인 요청 테이블·플로우 연동 후 구현 |
|
||||
| **역할(Role)** | Config\Roles levelNames 목록만 표시 | role 테이블·CRUD 및 역할별 설명 등 |
|
||||
| **메뉴(Menu)** | 안내 문구만 표시 | menu, menu_permission 테이블 및 메뉴별 권한 설정 (설계서 5단계) |
|
||||
| **회원 삭제 정책** | 탈퇴 처리만 수행 | 5년 보관 후 물리 삭제 등 스케줄/정책 추가 가능 |
|
||||
38
docs/완료된_개발_내역/관리자단/README.md
Normal file
38
docs/완료된_개발_내역/관리자단/README.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# 관리자단 구현 완료 내역
|
||||
|
||||
> 개발 규칙 및 `docs/ai용 개발계획/관리자단_개발_설계.md` 기준으로 구현된 관리자단(admin) 기능 요약.
|
||||
|
||||
---
|
||||
|
||||
## 접속 URL
|
||||
|
||||
| 구분 | URL |
|
||||
|------|-----|
|
||||
| 관리자 대시보드 | `/admin` |
|
||||
| 회원 관리 | `/admin/users` |
|
||||
| 회원 등록 | `/admin/users/create` |
|
||||
| 로그인 이력 | `/admin/access/login-history` |
|
||||
| 승인 대기 | `/admin/access/approvals` |
|
||||
| 역할 | `/admin/roles` |
|
||||
| 메뉴 | `/admin/menus` |
|
||||
|
||||
- 접속 조건: 로그인한 계정의 `mb_level`이 **3**(지자체관리자) 또는 **4**(super admin)이어야 함.
|
||||
|
||||
---
|
||||
|
||||
## 구현 목록
|
||||
|
||||
| 항목 | 경로 | 비고 |
|
||||
|------|------|------|
|
||||
| 필터 | `app/Filters/AdminAuthFilter.php` | 미로그인/비관리자 차단 |
|
||||
| 라우트 | `app/Config/Routes.php` | `admin` 그룹, `adminAuth` 적용 |
|
||||
| 컨트롤러 | `app/Controllers/Admin/*.php` | Dashboard, User, Access, Role, Menu |
|
||||
| 뷰 | `app/Views/admin/**/*.php` | layout, dashboard, user, access, role, menu |
|
||||
|
||||
상세는 아래 파일 참고.
|
||||
|
||||
- [01-필터.md](01-필터.md) — AdminAuth 필터
|
||||
- [02-라우트.md](02-라우트.md) — admin 라우트 목록
|
||||
- [03-컨트롤러.md](03-컨트롤러.md) — 컨트롤러·메서드 요약
|
||||
- [04-뷰.md](04-뷰.md) — 뷰 구조·역할
|
||||
- [05-사용방법_확장예정.md](05-사용방법_확장예정.md) — 사용 방법 및 추후 확장
|
||||
Reference in New Issue
Block a user