Garment.id
🇺🇸 English
  • 🇮🇩 Indonesian
  • 🇺🇸 English
Home
Core APITenant APISupport CenterChangelog
Home
Core APITenant APISupport CenterChangelog
Github
Instagram
|
🇺🇸 English
  • 🇮🇩 Indonesian
  • 🇺🇸 English
🇺🇸 English
  • 🇮🇩 Indonesian
  • 🇺🇸 English
  1. Home
  • Introduction
  • 01 - Project Structure
  • 02 - Context Boundaries
  • 03 - Central Auth Runtime
  • 04 - Central Billing
  • 05 - Tenant Runtime
  • 06 - FE Integration Contracts
  • 07 - Security, Middleware, and RLS
  • 08 - Events, Jobs, Listeners, Notifications, Observers
  • 09 - Testing and Quality Gates
  • 10 - Operations Runbook
  • 11 - Architecture Decisions (ADR Ringkas)
  • 12 - API Endpoint Catalog (v1)
  • 13 - Class Catalog by Context
  • 14 - Feature Development Playbook
  • 15 - Migration and Model Conventions
  • 16 - Service, Support, and Trait Contracts
  • 17 - Auth Business Scenarios and Decision Tree
  • 18 - Config Reference and Impact
  • 19 - Migration and Model Cookbook
  • 20 - Billing and Provisioning Business Flows
  • 21 - FE Error Handling Matrix
  • 22 - Incident Playbooks
  • 23 - Data Ownership Matrix
  • 24 - Documentation Governance and Changelog
  • 25 - Tenant Authorization Backend Guide
Home
Core APITenant APISupport CenterChangelog
Home
Core APITenant APISupport CenterChangelog
Github
Instagram
|
🇺🇸 English
  • 🇮🇩 Indonesian
  • 🇺🇸 English
🇺🇸 English
  • 🇮🇩 Indonesian
  • 🇺🇸 English
  1. Home

08 - Events, Jobs, Listeners, Notifications, Observers

Dokumen ini memetakan asynchronous/event-driven parts yang aktif sekarang.

Event Discovery#

Event listener didaftarkan via auto-discovery:
bootstrap/app.php -> withEvents(discover: [app/Listeners])
Tidak perlu Event::listen(...) manual di service provider untuk listener yang sudah ada di folder listeners.

Event Lifecycle Overview#

Events#

app/Events/TenantCreated.php
app/Events/TenantOnboardingCompleted.php
app/Events/PasswordResetRequested.php
app/Events/TokenCreated.php
app/Events/TokenUsed.php
app/Events/TokenRevoked.php

Listeners (Central)#

app/Listeners/Central/Auth/RegisterGoogleSocialiteProvider.php
app/Listeners/Central/Auth/AuthActivitySubscriber.php
app/Listeners/Central/Tenancy/ProvisionDefaultSubscriptionForTenant.php
app/Listeners/Central/Tenancy/ProvisionDefaultTaxonomiesForTenant.php

Jobs (Central)#

app/Jobs/Central/Auth/ProcessUserRegistration.php
app/Jobs/Central/Auth/LogAuthActivity.php

Provisioning Sequence (Tenant Created)#

Tenant Provisioning Extension Point#

Registrasi provisioner di config/tenancy.php key provisioning.provisioners.
Orchestrator memvalidasi:
implementasi TenantProvisioner
code() unik
class valid/resolvable
Re-run manual per tenant:
php artisan tenant:provision {tenant_uuid}
php artisan tenant:provision {tenant_uuid} --only=taxonomy

Notifications (Central)#

app/Notifications/Central/Auth/SuspiciousAuthActivityDetected.php
app/Notifications/Central/Billing/BillingOperationalAlertNotification.php
app/Notifications/Central/Billing/SubscriptionDunningStatusNotification.php
app/Notifications/Central/Security/SecurityOperationalAlertNotification.php
app/Notifications/Central/Tenancy/ClusterCapacityWarningNotification.php

Mail#

app/Mail/Central/Auth/WelcomeMail.php
app/Mail/Shared/TestMail.php

Observers#

Tenant master data observer:
app/Observers/Tenant/MasterData/TaxonomyObserver.php
Gunakan observer untuk constraint domain lokal model (slug normalize, parent validation, dsb), bukan untuk orchestration lintas domain besar.

Observer Role Boundary#

Observer cocok untuk:
normalize value (slug, name)
validasi parent-child lokal model
default value lokal model
Observer tidak cocok untuk:
provisioning lintas DB besar
orchestration multi domain/event chain
Diubah pada 2026-03-03 22:25:30
Sebelumnya
07 - Security, Middleware, and RLS
Berikutnya
09 - Testing and Quality Gates
Built with