75 lines
2.7 KiB
Markdown
75 lines
2.7 KiB
Markdown
# RBAC Build Progress — LeoCRM
|
|
|
|
## Letztes Update: 2026-07-29 01:23 CEST
|
|
|
|
## Sprint 1 — Fundament (14h)
|
|
|
|
### Erledigt ✅
|
|
- [x] EntityPermission Model erstellt (`app/models/entity_permission.py`)
|
|
- Generische Tabelle für alle Entities
|
|
- principal_type: user | group | role | guest
|
|
- permission_level: none | read | write | admin | delete
|
|
- expires_at für zeitlich begrenzte Freigaben
|
|
- created_by für Audit-Trail
|
|
- Indexes auf entity, principal, tenant, expires_at
|
|
|
|
- [x] OwnedMixin erstellt (`app/models/owned_mixin.py`)
|
|
- owner_id Feld (nullable, FK → users.id, ON DELETE SET NULL)
|
|
- Index auf owner_id
|
|
- Kann auf jedes Model angewendet werden
|
|
|
|
### In Bearbeitung 🔄
|
|
- [ ] Migration 0049: entity_permissions Tabelle
|
|
- [ ] Migration 0050: owner_id auf allen Models
|
|
- [ ] OwnedMixin auf alle Models anwenden
|
|
- [ ] EntityPermission in models/__init__.py registrieren
|
|
- [ ] Universeller Permission Service
|
|
- [ ] Universelle Permission API (5 Endpoints)
|
|
- [ ] Redis-Cache für Entity-Permissions
|
|
- [ ] PostgreSQL RLS Policies + set_user_context()
|
|
- [ ] Rate Limiting auf Permission-Änderungen
|
|
- [ ] Folder ACLs migrieren (Migration 0051)
|
|
|
|
### Noch offen ⬜
|
|
- [ ] Sprint 2-23 (siehe ENTERPRISE_RBAC_PLAN.md)
|
|
|
|
---
|
|
|
|
## Modelle erstellt in dieser Session
|
|
| Datei | Beschreibung |
|
|
|-------|-------------|
|
|
| app/models/entity_permission.py | Universelle ACL-Tabelle für alle Entities |
|
|
| app/models/owned_mixin.py | Mixin für owner_id auf jedem Model |
|
|
| app/models/contact_folder_permission.py | Folder-spezifische Permissions (wird migriert) |
|
|
|
|
## Services erstellt in dieser Session
|
|
| Datei | Beschreibung |
|
|
|-------|-------------|
|
|
| app/services/contact_folder_permission_service.py | Folder Permission Service (wird migriert) |
|
|
|
|
## Routes erstellt in dieser Session
|
|
| Datei | Beschreibung |
|
|
|-------|-------------|
|
|
| app/routes/contact_folder_permissions.py | Folder Permission CRUD API |
|
|
|
|
## Frontend erstellt in dieser Session
|
|
| Datei | Beschreibung |
|
|
|-------|-------------|
|
|
| frontend/src/components/contacts/FolderPermissionDialog.tsx | Permission Dialog UI |
|
|
| frontend/src/api/contactFolders.ts | Folder Permission API + Typen |
|
|
| frontend/src/api/contacts.ts | Folder Permission Hooks |
|
|
| frontend/src/components/contacts/ContactFolderTree.tsx | Menu-Eintrag 'Rechte' integriert |
|
|
|
|
## Migrationen
|
|
| # | Beschreibung | Status |
|
|
|---|-------------|:---:|
|
|
| 0048 | contact_folder_permissions Tabelle | ✅ Ausgeführt |
|
|
| 0049 | entity_permissions Tabelle | ⬜ Geplant |
|
|
| 0050 | owner_id auf allen Tabellen | ⬜ Geplant |
|
|
| 0051 | Folder ACLs → entity_permissions | ⬜ Geplant |
|
|
|
|
## Git Commits
|
|
| Hash | Beschreibung |
|
|
|------|-------------|
|
|
| cc021cd | feat: folder permissions (ACLs) - share folders with users/groups |
|