Enterprise-Grenzen
EnterpriseScope, RBAC, Audit, sichere Interop und Bootstrap-Modus.
EnterpriseScopeLink zu diesem Abschnitt: EnterpriseScope
Organisationsbezogene Enterprise-Ports erfordern einen EnterpriseScope. Fehlt die organizationId, wird ein Fehler geworfen — nie werden alle Mandanten zurückgegeben.
/// Fail-closed tenant + actor context for enterprise ports (ADR-002).
class EnterpriseScope {
final String organizationId;
final String actorId;
final PermissionSet permissions;
/// Throws if [organizationId] is missing/blank — never allow all-tenant lists.
static String requireOrganizationId(String? organizationId) {
final id = organizationId?.trim() ?? '';
if (id.isEmpty) {
throw StateError(
'EnterpriseScope: organizationId is required (fail-closed tenancy).',
);
}
return id;
}
}Quelle supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (öffnet in neuem Tab)
RBAC und AuditLink zu diesem Abschnitt: RBAC und Audit
Vertikale Features prüfen PermissionSet.allows(...) vor jedem ändernden Aufruf. Produkte deklarieren ihre eigenen Berechtigungsstrings.
Jede ändernde Enterprise-Aktion muss einen AuditLogEntry an das Append-only-AuditLogRepository anhängen.
Sichere InteropLink zu diesem Abschnitt: Sichere Interop
Produktübergreifende Aufrufe laufen über AfterSecureInteropBridge: After-ID-Audience, Scopes, RBAC und Org-Mitgliedschaft, dann ein verpflichtender Audit-Eintrag.
- Prüfung der After-ID-Audience
- Scopes, RBAC und Organisationsmitgliedschaft, sofern eine Organisation vorhanden ist
- Verpflichtender Audit-Eintrag
- Optionale Datenminimierung per Endpunkt-Schema
Bootstrap-ModusLink zu diesem Abschnitt: Bootstrap-Modus
Im Produktionsmodus wirft ein fehlender Adapter beim Start einen Fehler, sodass Mock-Provider nicht unbemerkt in Produktion gelangen.
/// Composition safety mode (ADR-007).
///
/// - [scaffold]: in-memory / mock adapters are allowed (templates, tests).
/// - [production]: missing real adapters must throw at startup.
enum AfterBootstrapMode {
scaffold,
production,
}Quelle supercore/packages/after_core/lib/src/bootstrap/after_bootstrap_mode.dart (öffnet in neuem Tab)
Enterprise-PortsLink zu diesem Abschnitt: Enterprise-Ports
Echte Backends ersetzen MockEnterpriseRepository im Composition Root. Die OS-Schicht erfährt nie den Namen des Anbieters.
- EnterpriseScope
- OrganizationRepository
- RbacRepository
- PermissionSet
- WorkflowEngine
- TaskRepository
- CalendarRepository
- DocumentRepository
- EnterpriseAiAssistant
- AuditLogRepository
- OfflineSyncQueue
- EnterpriseApiClient
- MockEnterpriseRepository
- EnterpriseProductRuntime
static Future<List<Override>> ensureConfigured({
EnterpriseRepository? enterpriseRepository,
}) async {
PlatformConfig.current = superAppEnterpriseManifest;
final prefs = await SharedPreferences.getInstance();
return [
...AfterStandardOverrides.create(
preferences: prefs,
userAgent: '${superAppEnterpriseManifest.appName}/'
'${superAppEnterpriseManifest.appId}',
),
enterpriseRepositoryProvider.overrideWithValue(
enterpriseRepository ?? MockEnterpriseRepository(),
),
];
}Quelle supercore/templates/super_app_enterprise/after_framework.dart (öffnet in neuem Tab)
Dies sind im supercore-Repository dokumentierte Architekturkontrollen. After Framework erhebt keinen Anspruch auf Zertifizierung oder regulatorische Konformität.