Tujuan dokumen ini: memastikan boundary Central, Tenant, dan Shared jelas dan konsisten.Central Context#
Auth global (register/login/refresh/logout)
User global profile/security/session
Tenant registry dan onboarding
Platform billing catalog & billing admin
Public billing catalog/webhook ingress
Global audit/security events
app/Http/Controllers/Api/V1/Central/Auth/MeController.php
app/Http/Controllers/Api/V1/Central/Billing/PlanController.php
app/Services/Central/Auth/AuthorizationResolver.php
Tenant Context#
Data operasional tenant-scoped
Integrasi tenant (feature-gated)
Master data tenant (taxonomy CRUD)
Subscription usage yang butuh tenant context + token tenant
app/Http/Controllers/Api/V1/Tenant/Billing/SubscriptionController.php
app/Http/Controllers/Api/V1/Tenant/MasterData/TaxonomyController.php
app/Models/Tenant/MasterData/Taxonomy.php
Shared Context#
Gunakan shared untuk logic yang dipakai lintas context, tanpa mengandung business policy spesifik context.app/Services/Shared/Billing/SubscriptionService.php
app/Http/Middleware/Shared/RequestContextMiddleware.php
Boundary Rules#
Controller central tidak boleh query model tenant secara langsung tanpa resolver/context yang benar.
Controller tenant wajib lewat stack middleware tenant (tenant.context, tenant.token, dsb).
Model tenant menggunakan trait HasTenantClusterConnection agar koneksi cluster resolved otomatis.
Endpoint auth tetap central walaupun dipakai setelah tenant login.
Authorization Boundary#
Auth identity tetap central (users, sanctum token, refresh token).
tenant-scoped di cluster tenant
platform admin di central
Resolver: app/Services/Central/Auth/AuthorizationResolver.php
Diubah pada 2026-03-03 22:25:30