Files
leocrm/RBAC_PROGRESS.md
T
2026-07-29 02:05:14 +02:00

2.6 KiB

RBAC Build Progress — LeoCRM

Letztes Update: 2026-07-29 02:00 CEST

Sprint 1 — Fundament (14h) VOLLSTÄNDIG

Alle Items erledigt und in Produktion. Siehe vorherige Commits.

Sprint 2 — Row-Level Security (16h) GRÖSSTEILS FERTIG

Erledigt

  • apply_visibility_filter() Helper (app/core/visibility.py, 237 Zeilen)
  • Query-Filter in contact_service (list, get, create, update, delete, export)
  • Query-Filter in 8 weiteren Services (address, attachment, bank_account, workflow, sequence, saved_filter, saved_view, webhook)
  • 8 Routes angepasst (user_id + is_system_admin + PermissionError handling)
  • BaseSearchProvider mit Visibility-Filter (app/plugins/builtins/unified_search/base_provider.py)
  • Frontend Permission-Checks: ContactDetailPage + ContactDetail + ContactsList
  • Field-Level UI: hidden fields nicht gerendert, readonly disabled
  • OwnedMixin auf 8 Models korrigiert (Klassendefinition)
  • Alles deployed und committed (52a5c34)

Noch offen

  • Child-Entity-Vererbung (ContactPerson erbt von Contact)
  • Copy/Duplicate Permission
  • EXISTS-Optimization für RLS (bereits in visibility.py verwendet)
  • Weitere 12 Routes (notifications, entity_history, custom_fields, etc.)

Sprint 3-23


Migrationen

# Beschreibung Status
0048 contact_folder_permissions Tabelle
0049 entity_permissions Tabelle
0050 owner_id auf 15 Tabellen
0051 Folder ACLs → entity_permissions
0052 RLS Policies auf contacts

Git Commits

Hash Beschreibung
cc021cd feat: folder permissions (ACLs)
5afa1fa sprint1: entity_permissions + owned_mixin + service + API + migrations 0049+0050
48647a5 sprint1: set_user_context + RLS policies + folder ACL migration 0051+0052
ea1c1d5 sprint1 complete: rate limiting on permission changes
479ee04 sprint2: visibility filter + contact service access checks
9fc84b7 sprint2: 8 services + 8 routes visibility filter + BaseSearchProvider
52a5c34 sprint2: frontend permission checks for ContactDetail + ContactsList

Was in Produktion läuft

  • entity_permissions Tabelle (universelle ACLs)
  • owner_id auf 15 Tabellen
  • PostgreSQL RLS auf contacts (4 Policies)
  • set_user_context() bei jedem Request
  • Universelle Permission API unter /api/v1/permissions/*
  • Rate Limiting auf Permission-Änderungen
  • Visibility Filter in 9 Services (contacts + 8 weitere)
  • Frontend Permission-Checks in ContactDetail + ContactsList
  • BaseSearchProvider für Permission-aware Search