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
superadminrolü atama UserDetailveUserSettingotomatik 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 öncecreated- Model oluşturulduktan sonraupdating- Model güncellenmeden önceupdated- Model güncellendikten sonradeleting- Model silinmeden öncedeleted- Model silindikten sonrarestoring- Model geri yüklenmeden öncerestored- 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
- Model Atlası - Tüm modeller ve ilişkileri
- Sistem Detayları - RBAC sistemi