Frontières entreprise
EnterpriseScope, RBAC, audit, interop sécurisée et mode d’amorçage.
EnterpriseScopeLien vers cette section: EnterpriseScope
Les ports entreprise liés à une organisation exigent un EnterpriseScope. Un organizationId manquant lève une exception — ils ne renvoient jamais tous les locataires.
/// 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 et auditLien vers cette section: RBAC et audit
Les fonctionnalités verticales vérifient PermissionSet.allows(...) avant tout appel de mutation. Les produits déclarent leurs propres chaînes de permissions.
Chaque action entreprise de mutation doit ajouter un AuditLogEntry à l’AuditLogRepository en ajout seul.
Interop sécuriséeLien vers cette section: Interop sécurisée
Les appels interproduits passent par AfterSecureInteropBridge : audience After ID, portées, RBAC et appartenance à l’organisation, puis une entrée d’audit obligatoire.
- Vérification de l’audience After ID
- Portées, RBAC et appartenance à l’organisation lorsqu’une organisation est présente
- Entrée d’audit obligatoire
- Minimisation facultative des données selon le schéma de l’endpoint
Mode d’amorçageLien vers cette section: Mode d’amorçage
En mode production, un adaptateur manquant lève une exception au démarrage : les providers mock ne peuvent pas atteindre la production en silence.
/// 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,
}Ports entrepriseLien vers cette section: Ports entreprise
Les vrais backends remplacent MockEnterpriseRepository à la racine de composition. La couche OS ne connaît jamais le nom du fournisseur.
- 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(),
),
];
}Source supercore/templates/super_app_enterprise/after_framework.dart (s’ouvre dans un nouvel onglet)
Il s’agit de contrôles d’architecture documentés dans le dépôt supercore. After Framework ne revendique aucune certification ni conformité réglementaire.