Confini enterprise
EnterpriseScope, RBAC, audit, interoperabilità sicura e modalità di avvio.
EnterpriseScopeLink a questa sezione: EnterpriseScope
I port enterprise con ambito organizzazione richiedono un EnterpriseScope. Se manca organizationId viene generata un’eccezione: non restituiscono mai tutti i tenant.
/// 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;
}
}RBAC e auditLink a questa sezione: RBAC e audit
Le funzionalità verticali verificano PermissionSet.allows(...) prima di ogni chiamata che modifica dati. I prodotti dichiarano le proprie stringhe di permesso.
Ogni azione enterprise che modifica dati deve aggiungere un AuditLogEntry all’AuditLogRepository append-only.
Interoperabilità sicuraLink a questa sezione: Interoperabilità sicura
Le chiamate tra prodotti passano da AfterSecureInteropBridge: audience After ID, scope, RBAC e appartenenza all’organizzazione, poi una voce di audit obbligatoria.
- Verifica dell’audience After ID
- Scope, RBAC e appartenenza all’organizzazione, se presente un’organizzazione
- Voce di audit obbligatoria
- Minimizzazione facoltativa dei dati tramite lo schema dell’endpoint
Modalità di avvioLink a questa sezione: Modalità di avvio
In modalità produzione un adapter mancante genera un’eccezione all’avvio, così i provider mock non possono arrivare in produzione inosservati.
/// 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,
}Port enterpriseLink a questa sezione: Port enterprise
I backend reali sostituiscono MockEnterpriseRepository nella composition root. Il livello OS non conosce mai il nome del fornitore.
- 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(),
),
];
}Sorgente supercore/templates/super_app_enterprise/after_framework.dart (si apre in una nuova scheda)
Si tratta di controlli architetturali documentati nel repository supercore. After Framework non dichiara alcuna certificazione né conformità normativa.