After Framework

Confini enterprise

EnterpriseScope, RBAC, audit, interoperabilità sicura e modalità di avvio.

Versione della documentazione: supercore main · pacchetti 1.0.0

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.

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

Sorgente supercore/packages/after_enterprise/lib/src/scope/enterprise_scope.dart (si apre in una nuova scheda)

ADR-002 (si apre in una nuova scheda)

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.

  1. Verifica dell’audience After ID
  2. Scope, RBAC e appartenenza all’organizzazione, se presente un’organizzazione
  3. Voce di audit obbligatoria
  4. Minimizzazione facoltativa dei dati tramite lo schema dell’endpoint

ADR-006 (si apre in una nuova scheda)

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.

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

Sorgente supercore/packages/after_core/lib/src/bootstrap/after_bootstrap_mode.dart (si apre in una nuova scheda)

ADR-007 (si apre in una nuova scheda)

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
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(),
    ),
  ];
}

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.