Filament 패널 개요
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Level 0~6 계층별 Filament 관리 패널 시스템을 소개합니다.
개요
Multi-SaaS Kit은 권한 시스템 (Level 0~6, ADR-058)에 맞춰 계층별 독립 패널을 제공합니다. 각 패널은 해당 권한 레벨에 최적화된 UI와 기능을 제공하며, URL 경로는 환경변수로 커스터마이징 가능합니다.
왜 패널을 분리하는가?
| 단일 패널 | 계층별 패널 분리 |
|---|---|
| 권한 체크 누락 시 보안 취약 | 애초에 해당 메뉴만 존재 |
| 복잡한 조건부 UI | 역할에 최적화된 UI |
| 동일한 URL | 계층별 다른 URL (보안 강화) |
결론: 계층별 패널 분리가 권한 시스템 (Level 0~6, ADR-058)의 의도와 일치하며, 보안상 더 견고합니다.
Level 0~6 계층 패널 구조
┌─────────────────────────────────────────────────────────────┐
│ Filament 패널 구조 │
├─────────────── ──────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Platform (Level 0) │ │
│ │ • 플랫폼 전체 관리자 │ │
│ │ • SaaS 제품, 전체 사용자, 시스템 설정 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Saas (Level 1) │ │
│ │ • SaaS 제품 운영 관리자 │ │
│ │ • 테넌트 관리, SaaS별 설정 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Tenant (Level 2) │ │
│ │ • 테넌트/고객사 관리자 │ │
│ │ • 조직 관리, 테넌트 설정 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌──────────────────── ─────────────────────────────────┐ │
│ │ Org (Level 3) │ │
│ │ • 조직 관리자 │ │
│ │ • 워크스페이스 관리 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Workspace (Level 4) │ │
│ │ • 워크스페이스 관리자 │ │
│ │ • 팀/그룹 관리 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Team (Level 5) │ │
│ │ • 그룹 리더 │ │
│ │ • 팀원 관리 │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ App (Level 6) │ │
│ │ • 일반 사용자 (Member) │ │
│ │ • 개인 설정, 마이페이지 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
패널별 요약
관리 패널 (Backoffice)
| 레벨 | 역할 | 패널 ID | 기본 경로 | 주요 기능 |
|---|---|---|---|---|
| 0 | Platform Admin | platform | /platform | SaaS 제품 관리, 전체 감사 로그, 시스템 설정 |
| 1 | SaaS Admin | saas | /saas | 테넌트 관리, Tenant Admin 배정 |
| 2 | Tenant Admin | tenant | /tenant | 조직 관리, 사용자 관리, Guardian 관계 |
| 3 | Organization Admin | org | /org | 워크스페이스 관리, 조직 설정 |
| 4 | Workspace Admin | workspace | /workspace | 팀/그룹 관리, 워크스페이스 설정 |
| 5 | Group Leader | team | /team | 팀원 관리, 팀 대시보드 |
사용자 영역 (Frontend)
| 레벨 | 역할 | 패널 ID | 기본 경로 | 설명 |
|---|---|---|---|---|
| 6 | Member | app | /app | 로그인 사용자 영역 |
| - | Guest | web | / | 공개 웹사이트 (Filament 외) |
URL 구조
기본 구조
https://example.com/
├── / → 랜딩 페이지 (Guest)
├── /app → 회원 영역 (Level 6)
├── /team → 그룹 리더 패널 (Level 5)
├── /workspace → 워크스페이스 패널 (Level 4)
├── /org → 조직 관리 패널 (Level 3)
├── /tenant → 테넌트 관리 패널 (Level 2)
├── /saas → SaaS 운영 패널 (Level 1)
└── /platform → 플랫폼 관리 패널 (Level 0)
로그인 URL
각 패널은 독립된 로그인 페이지를 가집니다:
/platform/login → Platform Admin 로그인
/saas/login → SaaS Admin 로그인
/tenant/login → Tenant Admin 로그인
/app/login → 일반 사용자 로그인
환경변수 설정
.env 설정
#──────────────────────────────────────────────────────────────────
# PANEL PATHS (Level 0~6 계층 권한별 패널 경로)
#──────────────────────────────────────────────────────────────────
# Level 0: Platform Admin (내부 운영팀 - 보안상 숨김 경로 권장)
PANEL_PATH_PLATFORM=platform
# Level 1: SaaS Admin (SaaS 운영 관리)
PANEL_PATH_SAAS=saas
# Level 2: Tenant Admin (테넌트/고객사 관리)
PANEL_PATH_TENANT=tenant
# Level 3: Organization Admin (조직 관리)
PANEL_PATH_ORG=org
# Level 4: Workspace Admin (워크스페이스 관리)
PANEL_PATH_WORKSPACE=workspace
# Level 5: Group Leader (팀/그룹 관리)
PANEL_PATH_TEAM=team
# Level 6: Member (일반 사용자 영역)
PANEL_PATH_APP=app
보안 권장 설정 (프로덕션)
# 내부 관리자 패널은 알기 어려운 경로 사용
PANEL_PATH_PLATFORM=ops-x7k9m2
PANEL_PATH_SAAS=mgmt-f4a2b8
# 고객용 패널은 친숙한 경로 유지
PANEL_PATH_TENANT=admin
PANEL_PATH_ORG=manage
보안 팁
Platform, SaaS 패널처럼 내부 관리자용 패널은 알기 어려운 경로로 설정하면 무차별 대입 공격을 줄일 수 있습니다.
파일 구조
PanelProvider 위치
app/Providers/Filament/
├── PlatformPanelProvider.php # Level 0
├── SaasPanelProvider.php # Level 1
├── TenantPanelProvider.php # Level 2
├── OrgPanelProvider.php # Level 3
├── WorkspacePanelProvider.php # Level 4
├── TeamPanelProvider.php # Level 5
└── AppPanelProvider.php # Level 6
Filament 리소스 구조
app/Filament/
├── Resources/ # 공유 리소스 (모든 패널에서 사용 가능)
│ ├── UserResource.php
│ ├── TenantResource.php
│ └── ...
│
├── Platform/ # Level 0 전용
│ ├── Resources/
│ │ ├── SaasProductResource.php
│ │ ├── SaasAdminResource.php
│ │ └── AuditLogResource.php
│ ├── Pages/
│ └── Widgets/
│
├── Saas/ # Level 1 전용
│ ├── Resources/
│ │ ├── TenantResource.php
│ │ └── TenantAdminResource.php
│ ├── Pages/
│ └── Widgets/
│
├── Tenant/ # Level 2 전용
│ ├── Resources/
│ │ ├── OrganizationResource.php
│ │ ├── GuardianRelationshipResource.php
│ │ └── AuditLogResource.php
│ ├── Pages/
│ └── Widgets/
│
├── Org/ # Level 3 전용
├── Workspace/ # Level 4 전용
├── Team/ # Level 5 전용
│ └── Resources/
│ └── MemberResource.php
│
└── App/ # Level 6 전용
├── Resources/
├── Pages/
└── Widgets/