docs: add project docs and test updates
This commit is contained in:
97
docs/기본 개발계획/21-super_admin_지자체_선택_흐름.md
Normal file
97
docs/기본 개발계획/21-super_admin_지자체_선택_흐름.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# Super Admin 지자체 선택 흐름
|
||||
|
||||
> Super admin이 로그인 시 지자체를 하나 선택한 뒤, 해당 지자체 관리자와 동일한 화면/권한으로 사용하고, 필요 시 지자체를 전환하는 방식 정리.
|
||||
|
||||
---
|
||||
|
||||
## 1. 목적
|
||||
|
||||
- Super admin이 **전체 지자체 데이터를 한꺼번에** 보지 않고, **선택한 한 지자체** 기준으로만 화면이 보이게 한다.
|
||||
- 지자체 관리자와 **동일한 UX**로 사용해 테스트·지원·교육을 단순화한다.
|
||||
- 실수로 다른 지자체 데이터를 조회·수정하는 것을 줄인다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 흐름 요약
|
||||
|
||||
| 단계 | Super Admin | 지자체 관리자 |
|
||||
|------|-------------|----------------|
|
||||
| 로그인 직후 | **지자체 선택 화면**으로 이동 → 목록에서 하나 선택 | **관리자 대시보드**로 바로 이동 |
|
||||
| 관리자 사용 중 | 선택한 지자체의 데이터만 조회·등록·수정 (지자체 관리자와 동일) | 소속 지자체(`mb_lg_idx`) 데이터만 조회·등록·수정 |
|
||||
| 지자체 전환 | 상단 **「지자체 전환」** 메뉴로 선택 화면 이동 → 다른 지자체 선택 가능 | 해당 없음 (소속 지자체 고정) |
|
||||
| 지자체 등록/목록 | **「지자체」** 메뉴로 전체 지자체 CRUD (시스템 설정 용도) | 메뉴 비노출 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 세션·권한 규칙
|
||||
|
||||
### 3-1. 세션 값
|
||||
|
||||
- **`admin_selected_lg_idx`** (int|null)
|
||||
- Super admin이 **선택한 지자체 PK**.
|
||||
- 지자체 선택 화면에서 선택 시 설정, 지자체 전환 시 변경.
|
||||
- **지자체 관리자**
|
||||
- `mb_lg_idx`만 사용하며 `admin_selected_lg_idx`는 사용하지 않음.
|
||||
|
||||
### 3-2. “효과 지자체”(effective lg)
|
||||
|
||||
관리자 페이지에서 **데이터 필터·등록 시 사용하는 지자체**는 다음 규칙으로 결정한다.
|
||||
|
||||
| mb_level | 효과 지자체 |
|
||||
|----------|-------------|
|
||||
| 4 (Super Admin) | `session('admin_selected_lg_idx')` |
|
||||
| 3 (지자체 관리자) | `session('mb_lg_idx')` |
|
||||
|
||||
- 컨트롤러·쿼리에서는 위 값을 **effective lg_idx**로 사용해 `WHERE lg_idx = ?` 등을 적용한다.
|
||||
- 구현 시 헬퍼 `admin_effective_lg_idx()`로 일괄 조회한다.
|
||||
|
||||
### 3-3. 접근 제어
|
||||
|
||||
- **Super admin**
|
||||
- `admin_selected_lg_idx`가 **없으면** 관리자 대시보드 등 다른 admin URL 접근 시 **지자체 선택 화면(`/admin/select-local-government`)** 으로 리다이렉트.
|
||||
- `admin/select-local-government` 자체는 `admin_selected_lg_idx` 없이 접근 가능.
|
||||
- **지자체 관리자**
|
||||
- 지자체 선택 화면으로 보내지 않으며, 항상 `mb_lg_idx`로 동작.
|
||||
|
||||
---
|
||||
|
||||
## 4. 화면·메뉴
|
||||
|
||||
### 4-1. 지자체 선택 화면 (`/admin/select-local-government`)
|
||||
|
||||
- **노출 대상**: Super admin만 (지자체 관리자는 이 URL로 유도되지 않음).
|
||||
- **내용**: 사용 가능한 지자체(`lg_state=1`) 목록. 하나 선택 후 제출하면 `admin_selected_lg_idx` 저장 후 `/admin`으로 이동.
|
||||
- **지자체 전환**: 관리자 레이아웃 상단의 「지자체 전환」 클릭 시 동일 화면으로 이동해 다른 지자체 선택 가능.
|
||||
|
||||
### 4-2. 관리자 레이아웃
|
||||
|
||||
- **Super admin**
|
||||
- **지자체 전환**: 상단 메뉴에 표시, 클릭 시 `/admin/select-local-government` 이동.
|
||||
- **현재 선택 지자체**: 상단에 현재 선택된 지자체명 표시(선택된 경우).
|
||||
- **지자체**: 기존처럼 전체 지자체 CRUD용 메뉴 유지 (지자체 등록/목록).
|
||||
- **지자체 관리자**
|
||||
- 지자체 전환 메뉴 비노출, 지자체 메뉴(전체 CRUD) 비노출.
|
||||
|
||||
---
|
||||
|
||||
## 5. 기능별 동작
|
||||
|
||||
- **지정판매소 목록/등록**
|
||||
- Super admin: `admin_selected_lg_idx` 기준으로 해당 지자체 지정판매소만 조회·등록.
|
||||
- 지자체 관리자: `mb_lg_idx` 기준 (기존과 동일).
|
||||
- **지자체 목록/등록** (지자체 메뉴)
|
||||
- Super admin만 접근, 전체 지자체 조회·등록·수정.
|
||||
- “지자체 선택”과 분리: 선택 = 작업 컨텍스트, 지자체 메뉴 = 시스템 설정.
|
||||
|
||||
---
|
||||
|
||||
## 6. 구현 참고
|
||||
|
||||
| 구분 | 경로 |
|
||||
|------|------|
|
||||
| 필터 | `app/Filters/AdminAuthFilter.php` — Super admin이고 `admin_selected_lg_idx` 미설정 시 `admin/select-local-government`이 아니면 선택 페이지로 리다이렉트 |
|
||||
| 헬퍼 | `app/Helpers/admin_helper.php` — `admin_effective_lg_idx()` |
|
||||
| 지자체 선택 | `app/Controllers/Admin/SelectLocalGovernment.php`, `app/Views/admin/select_local_government/index.php` |
|
||||
| 라우트 | `GET/POST admin/select-local-government` |
|
||||
|
||||
- **문서**: `docs/기본 개발계획/테이블/03-지자체_데이터_필터_및_권한.md`와 연계.
|
||||
Reference in New Issue
Block a user