Ana içeriğe geç

Observer Matrisi

Platform, model lifecycle event'lerini yönetmek için Observer pattern kullanır. Her model için ilgili observer tanımlıdır.

Observer Listesi

Kullanıcı Yönetimi

  • UserObserver - User modeli için

    • UUID oluşturma
    • İlk kullanıcıya superadmin rolü atama
    • UserDetail ve UserSetting otomatik oluşturma
  • UserDetailObserver - UserDetail modeli için

    • UUID oluşturma
  • UserSettingObserver - UserSetting modeli için

    • UUID oluşturma
    • Varsayılan ayarlar (locale: tr, timezone: Europe/Istanbul)

RBAC

  • RoleObserver - Role modeli için

    • UUID oluşturma
  • PermissionObserver - Permission modeli için

    • UUID oluşturma

Organizasyon & Müşteri

  • OrganizationObserver - Organization modeli için

    • UUID oluşturma
    • Slug üretimi (name'den)
  • CustomerObserver - Customer modeli için

    • UUID oluşturma
  • CustomerDetailObserver - CustomerDetail modeli için

    • UUID oluşturma

Başvurular

  • ApplicationObserver - Application modeli için

    • UUID oluşturma
  • ApplicationSubjectObserver - ApplicationSubject modeli için

    • UUID oluşturma

İçerik & Raporlar

  • ContentObserver - Content modeli için

    • UUID oluşturma
    • Slug üretimi (title'den)
  • ReportObserver - Report modeli için

    • UUID oluşturma

Bildirimler & Entegrasyonlar

  • NotificationObserver - Notification modeli için

    • UUID oluşturma
  • ApiKeyObserver - ApiKey modeli için

    • UUID oluşturma
    • Key hash'leme (key_prefix + random string)
  • IntegrationObserver - Integration modeli için

    • UUID oluşturma

Lokalizasyon & Para Birimi

  • LocaleObserver - Locale modeli için

    • UUID oluşturma (gerekirse)
  • CurrencyObserver - Currency modeli için

    • UUID oluşturma (gerekirse)
  • TranslationObserver - Translation modeli için

    • UUID oluşturma (gerekirse)

Sistem

  • AuditLogObserver - AuditLog modeli için
    • UUID oluşturma (gerekirse)

Sanctum

  • PersonalAccessTokenObserver - PersonalAccessToken modeli için
    • UUID oluşturma
    • Device, IP, location bilgilerini metadata'ya kaydetme

Observer Kayıt

Observer'lar AppServiceProvider içinde kayıtlıdır:

use App\Models\User;
use App\Observers\UserObserver;

public function boot(): void
{
User::observe(UserObserver::class);
// ... diğer observer'lar
}

Observer Event'leri

Her observer aşağıdaki event'leri dinler:

  • creating - Model oluşturulmadan önce
  • created - Model oluşturulduktan sonra
  • updating - Model güncellenmeden önce
  • updated - Model güncellendikten sonra
  • deleting - Model silinmeden önce
  • deleted - Model silindikten sonra
  • restoring - Model geri yüklenmeden önce
  • restored - Model geri yüklendikten sonra

Örnek Observer

namespace App\Observers;

use App\Models\User;
use Illuminate\Support\Str;

class UserObserver
{
public function creating(User $user): void
{
if (empty($user->uuid)) {
$user->uuid = (string) Str::uuid();
}
}

public function created(User $user): void
{
// İlk kullanıcıya superadmin rolü atama
if (User::count() === 1) {
$superadminRole = Role::where('slug', 'mgmt.superadmin')->first();
if ($superadminRole) {
$user->roles()->attach($superadminRole->id);
}
}

// UserDetail ve UserSetting otomatik oluşturma
$user->detail()->create([]);
$user->setting()->create([]);
}
}

İlgili Dokümantasyon