Release Notes — 10. April 2026
Diese Version implementiert das Tier-Gate für benutzerdefinierte Rollen (RBAC) und behebt einen Datenbankfehler bei der Workspace-Rollen-Indexkollision.
Benutzerdefinierte Rollen — Nur ENTERPRISE (RBAC Tier-Gate)
Übersicht
Das Erstellen, Bearbeiten und Löschen benutzerdefinierter Berechtigungsrollen ist jetzt auf den Enterprise-Tarif beschränkt. Dies ist der Branchenstandard — Clockify und Toggl Track beschränken benutzerdefinierte Rollen ebenfalls auf ihre höchste Tarifstufe.
Standardrollen (Betrachter, Mitglied, Manager, Eigentümer) bleiben auf allen Tarifen unverändert verfügbar.
Backend
| Endpunkt | Guard |
|---|---|
POST /api/v1/workspace-roles | requireFeature('customRoles') |
PUT /api/v1/workspace-roles/:roleId | requireFeature('customRoles') |
DELETE /api/v1/workspace-roles/:roleId | requireFeature('customRoles') |
Nicht-Enterprise-Arbeitsbereiche erhalten 403 FEATURE_NOT_AVAILABLE.
Frontend
useFeatureAccess.ts:customRolesauf'enterprise'gesetztUnifiedRolesPage.tsx: „Neue Rolle"-Schaltfläche in<FeatureGate feature="customRoles">eingebettet — in FREE/PRO-Tarifen ausgeblendet
Preisvergleichsseite
/api/v1/pricing-comparison gibt jetzt eine Zeile custom-roles in der Kategorie Team & Zusammenarbeit zurück:
| FREE | PRO | ENTERPRISE | |
|---|---|---|---|
| Benutzerdefinierte Rollen |
Fix: Workspace-Rollen-Indexkollision
Problem
Workspace-Rollen (Scope: workspace) haben unitId: null, da sie nicht an einen bestimmten Arbeitsbereich gebunden sind. Der eindeutige Index { unitId, scope, name } verursachte einen E11000 DuplicateKey-Fehler ab dem zweiten Arbeitsbereich.
Auswirkung: Der Endpunkt /api/v1/workspace-roles?scope=workspace gab für alle Arbeitsbereiche außer dem ersten eine leere Liste zurück.
Fix
UnifiedRole.model.ts: Zwei partielle eindeutige Indizes (statt einem)roleCopy.service.ts:insertOne→findOneAndUpdate + upsert(idempotent)- Migrationsskript ausgeführt: Alle 25 Unit-DBs repariert, fehlende Workspace-Rollen nachgefüllt
Änderungsübersicht
| Ebene | Änderung |
|---|---|
Backend tier.types.ts | customRoles zu FeatureName hinzugefügt |
Backend FeatureGate.service.ts | customRoles → team.departments in beiden Feature-Maps |
Backend workspaceRoles.routes.ts | requireFeature('customRoles') für POST / PUT / DELETE |
Backend UnifiedRole.model.ts | unitId: required: false + 2 partielle eindeutige Indizes |
Backend pricing.controller.ts | Zeile custom-roles zur Kategorie Team & Zusammenarbeit |
Backend stripe.config.ts | 'Benutzerdefinierte Rollen (RBAC)' zur ENTERPRISE-Feature-Liste |
Frontend useFeatureAccess.ts | customRoles: 'enterprise' |
Frontend UnifiedRolesPage.tsx | „Neue Rolle"-Schaltfläche in <FeatureGate> eingebettet |
Verfügbarkeit: Benutzerdefinierte Rollen erstellen/bearbeiten/löschen — Nur ENTERPRISE. Standardrollen — alle Tarifstufen.