Organization 패널 (Level 3)
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Organization Admin 전용 패널 기능을 설명합니다.
개요
Organization 패널은 **Level 3 (Organization Admin)**을 위한 관리 패널입니다. 조직 내의 워크스페이스를 관리하고, 조직 설정 및 멤버 배정을 담당합니다.
접근 권한
| 항목 | 값 |
|---|---|
| 권한 레벨 | Level 3 (Organization Admin) |
| 기본 경로 | /org |
| 환경변수 | PANEL_PATH_ORG |
| 접근 가능자 | Level 0, 1, 2, 3 |
담당 범위
Organization Admin은 자신이 관리하는 조직 내에서만 권한을 가집니다:
Organization A (담당)
├── Workspace 1 ✅ 관리 가능
│ ├── Team 1 ✅
│ └── Team 2 ✅
├── Workspace 2 ✅ 관리 가능
│ └── Team 3 ✅
└── 조직 내 사용자 ✅ 관리 가능
Organization B (타 조직)
└── 모든 데이터 ❌ 접근 불가
주요 기능
1. 워크스페이스 관리
조직 내의 워크스페이스를 생성하고 관리합니다.
| 필드 | 설명 | 예시 |
|---|---|---|
name | 워크스페이스명 | "개발팀 공간" |
code | 워크스페이스 코드 | "DEV-WS-01" |
description | 설명 | "백엔드 개발 워크스페이스" |
max_members | 최대 멤버 수 | 20 |
is_active | 활성화 여부 | true/false |
2. Workspace Admin 배정
각 워크스페이스에 **Level 4 관리자(Workspace Admin)**를 배정합니다.
관리 기능:
- Workspace Admin 계정 생성
- 담당 워크스페이스 배정
- 권한 범위 설정
3. 조직 설정
조직의 기본 설정을 관리합니다.
| 설정 | 설명 |
|---|---|
| 조직 정보 | 이름, 설명, 로고 |
| 기본 권한 | 멤버 기본 권한 설정 |
| 알림 설정 | 이메일/푸시 알림 규칙 |
4. 멤버 현황
조직 내 모든 멤버 현황을 조회합니다.
| 지표 | 설명 |
|---|---|
| 총 멤버 수 | 조직 전체 인원 |
| 워크스페이스별 분포 | 각 워크스페이스 인원 |
| 레벨별 분포 | Level 4, 5, 6 인원 |
파일 구조
app/Filament/Org/
├── Resources/
│ ├── WorkspaceResource.php
│ └── WorkspaceAdminResource.php
│
├── Pages/
│ ├── Dashboard.php
│ └── OrganizationSettings.php
│
└── Widgets/
├── MemberStatsWidget.php
└── WorkspaceOverviewWidget.php
PanelProvider 설정
// app/Providers/Filament/OrgPanelProvider.php
class OrgPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->id('org')
->path(env('PANEL_PATH_ORG', 'org'))
->login()
->colors(['primary' => Color::Teal])
->discoverResources(
in: app_path('Filament/Org/Resources'),
for: 'App\Filament\Org\Resources'
)
->authMiddleware([
Authenticate::class,
EnsureUserLevel::class.':0,1,2,3', // Level 0-3 접근
]);
}
}
데이터 필터링
Organization Admin은 자신이 관리하는 조직 내 데이터만 조회합니다:
// WorkspaceResource.php
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->where('organization_id', auth()->user()->organization_id);
}