Workspace 패널 (Level 4)
📝 초안 (Draft)
이 문서는 검토 중입니다. 내용이 변경될 수 있습니다.
Workspace Admin 전용 패널 기능을 설명합니다.
개요
Workspace 패널은 **Level 4 (Workspace Admin)**을 위한 관리 패널입니다. 워크스페이스 내의 팀/그룹을 관리하고, 팀 리더를 배정하며, 리소스를 할당합니다.
접근 권한
| 항목 | 값 |
|---|---|
| 권한 레벨 | Level 4 (Workspace Admin) |
| 기본 경로 | /workspace |
| 환경변수 | PANEL_PATH_WORKSPACE |
| 접근 가능자 | Level 0, 1, 2, 3, 4 |
담당 범위
Workspace Admin은 자신의 워크스페이스 내에서만 권한을 가집니다:
Workspace A (담당)
├── Team 1 ✅ 관리 가능
│ ├── Member 1 ✅
│ └── Member 2 ✅
├── Team 2 ✅ 관리 가능
│ └── Member 3 ✅
└── 워크스 페이스 설정 ✅ 수정 가능
Workspace B (타 워크스페이스)
└── 모든 데이터 ❌ 접근 불가
주요 기능
1. 팀/그룹 관리
워크스페이스 내의 **팀(그룹)**을 생성하고 관리합니다.
| 필드 | 설명 | 예시 |
|---|---|---|
name | 팀명 | "프론트엔드팀" |
code | 팀 코드 | "FE-TEAM" |
description | 설명 | "웹 프론트엔드 개발" |
max_members | 최대 멤버 수 | 10 |
is_active | 활성화 여부 | true/false |
2. Group Leader 배정
각 팀에 **Level 5 관리자(Group Leader)**를 배정합니다.
관리 기능:
- Group Leader 계정 생성
- 담당 팀 배 정
- Impersonate 액션 (팀 리더로 전환)
3. 워크스페이스 설정
워크스페이스의 기본 설정을 관리합니다.
| 설정 | 설명 |
|---|---|
| 워크스페이스 정보 | 이름, 설명 |
| 리소스 할당 | 저장 공간, API 호출 제한 |
| 기능 토글 | 워크스페이스별 기능 활성화 |
4. 팀 통계
워크스페이스 내 팀별 현황을 조회합니다.
| 지표 | 설명 |
|---|---|
| 총 팀 수 | 워크스페이스 내 팀 개수 |
| 팀별 멤버 수 | 각 팀의 인원 |
| 활동 현황 | 최근 활동 로그 |
파일 구조
app/Filament/Workspace/
├── Resources/
│ ├── TeamResource.php
│ └── GroupLeaderResource.php
│
├── Pages/
│ ├── Dashboard.php
│ └── WorkspaceSettings.php
│
└── Widgets/
├── TeamOverviewWidget.php
└── ActivityWidget.php
PanelProvider 설정
// app/Providers/Filament/WorkspacePanelProvider.php
class WorkspacePanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->id('workspace')
->path(env('PANEL_PATH_WORKSPACE', 'workspace'))
->login()
->colors(['primary' => Color::Indigo])
->discoverResources(
in: app_path('Filament/Workspace/Resources'),
for: 'App\Filament\Workspace\Resources'
)
->authMiddleware([
Authenticate::class,
EnsureUserLevel::class.':0,1,2,3,4', // Level 0-4 접근
]);
}
}
데이터 필터링
Workspace Admin은 자신의 워크스페이스 내 데이터만 조회합니다:
// TeamResource.php
public static function getEloquentQuery(): Builder
{
return parent::getEloquentQuery()
->where('workspace_id', auth()->user()->workspace_id);
}