After Framework

Frontières entreprise

EnterpriseScope, RBAC, audit, interop sécurisée et mode d’amorçage.

Version de la doc: supercore main · packages 1.0.0

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.

dart
/// 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;
  }
}

Source supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (s’ouvre dans un nouvel onglet)

ADR-002 (s’ouvre dans un nouvel onglet)

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.

  1. Vérification de l’audience After ID
  2. Portées, RBAC et appartenance à l’organisation lorsqu’une organisation est présente
  3. Entrée d’audit obligatoire
  4. Minimisation facultative des données selon le schéma de l’endpoint

ADR-006 (s’ouvre dans un nouvel onglet)

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.

dart
/// 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,
}

Source supercore/packages/after_core/lib/src/bootstrap/after_bootstrap_mode.dart (s’ouvre dans un nouvel onglet)

ADR-007 (s’ouvre dans un nouvel onglet)

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
dart
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.