Files
jongryangje/docs/기본 개발계획/테이블/03-지자체_데이터_필터_및_권한.md
2026-04-08 00:23:55 +09:00

2.4 KiB

지자체 데이터 필터 및 권한

멀티테넌트 환경에서 해당 지자체 데이터만 조회·수정하기 위한 필터 규칙과 권한별 접근.


1. 로그인 사용자의 지자체 결정

mb_level 지자체 식별 비고
4 (super admin) 없음 lg_idx 조건 없이 전체 조회
3 (지자체관리자) member.mb_lg_idx 해당 지자체만 접근
2 (지정판매소) designated_shop.ds_lg_idx (로그인 회원의 ds_mb_idx로 조회한 판매소의 지자체) 해당 지자체 내에서도 자기 판매소(ds_idx) 데이터 위주 제한 가능
1 (일반) 없음 지자체 필터 없음 또는 본인 데이터만

2. 쿼리 필터 적용

  • 지자체별 테이블(local_government 제외) 조회·수정·삭제 시 현재 사용자에 따른 lg_idx 를 구한 뒤 WHERE lg_idx = ? 조건 추가.
  • 지정판매소 사용자: 주문 목록 등은 so_ds_idx = (자기 ds_idx) 로 추가 제한.
// 예: 지자체관리자 — 담당 지자체 데이터만
$lgIdx = session()->get('mb_lg_idx'); // mb_level == 3 일 때 설정
$builder = $productModel->where('pr_lg_idx', $lgIdx);

// 예: 지정판매소 — 자기 판매소 주문만
$dsIdx = session()->get('ds_idx'); // 로그인 시 ds_mb_idx 로 조회한 ds_idx
$builder = $salesOrderModel->where('so_ds_idx', $dsIdx);

3. 적용 위치

  • 컨트롤러/서비스: 목록·상세·등록·수정·삭제 시 "현재 사용자 지자체(ds_idx 포함 여부)"를 세션 또는 서비스에서 구해 쿼리에 반영.
  • 필터/미들웨어: 관리자 라우트에서 mb_lg_idx, ds_idx 등을 세션·뷰에 넣어 두고, 지자체별 API/화면에서 일괄 적용하면 누락을 줄일 수 있음.

4. 테이블별 지자체 FK 요약

테이블 지자체 FK 비고
local_government 테넌트 루트
member mb_lg_idx (nullable) 지자체관리자만 설정
designated_shop ds_lg_idx
product pr_lg_idx
product_price pp_lg_idx
packaging_unit pu_lg_idx
agent ag_lg_idx
contact ct_lg_idx
company co_lg_idx
beneficiary bf_lg_idx
purchase_order po_lg_idx
inbound_receipt ir_lg_idx
sales_order so_lg_idx 데이터 격리용
stock_transaction st_lg_idx