Müşteri hesabının kendisiyle ilgili 103 kanca: kayıt, giriş, doğrulama, engelleme, alt hesaplar ve satış ortaklığı.
Genel Bakış
Bu alan hesabın kendisini taşır: açılışını, girişini, kimlik doğrulamasını, engellenmesini, silinmesini. Müşterinin gördüğü ekranlar ayrı bir alandadır.
Kancaların bir bölümü yönetim panelinde çalışır, çünkü bir hesabı operatör de değiştirebilir. Bu yüzden bir dinleyici yazarken "bunu kim yaptı" sorusunun cevabı her zaman müşteri değildir.
Referans
Hesabın ömrü
action:user.createdHesap açıldı. Dönüş kullanılmaz.
action:user.updatedHesap bilgisi değişti. Dönüş kullanılmaz.
action:user.status_changedHesap durumu değişti. Dönüş kullanılmaz.
action:user.account_blockedHesap engellendi ya da engeli kalktı. Dönüş kullanılmaz.
action:user.deletedHesap silindi. Dönüş kullanılmaz.
action:user.deleted_dormantUzun süre kullanılmayan hesap otomatik silindi. Dönüş kullanılmaz.
Giriş ve güvenlik
action:user.logged_inGiriş yapıldı. Dönüş kullanılmaz.
action:user.login_failedGiriş denemesi başarısız. Dönüş kullanılmaz.
action:user.logged_in_asBir personel müşteri hesabına geçti. Dönüş kullanılmaz.
action:user.password_changedParola değişti. Dönüş kullanılmaz.
action:user.two_factor_changedİki adımlı doğrulama açıldı ya da kapandı. Dönüş kullanılmaz; bu noktada değişiklik çoktan kaydedildi.
action:user.session_revokedBir oturum sonlandırıldı. Dönüş kullanılmaz.
action:user.account_switchedMüşteri başka bir hesaba geçti. Dönüş kullanılmaz; oturum çoktan yazıldı.
Kapılar
On sekiz kapı, hesapla ilgili her ağır işin önünde durur. Hepsi aynı sözleşmeyi taşır: boş olmayan bir string işlemi durdurur. Boş dönüş — null ya da '' — işleme devam ettirir.
gate:user.createHesap açma. Dolu dönüş işlemi durdurur; o metin hata mesajı olur.
gate:user.loginGiriş — parola doğrulandıktan sonra. Dolu dönüş girişi durdurur; string de ['message' => '…'] dizisi de geçerli.
gate:user.login_asPersonelin müşteri hesabına geçmesi. Dolu dönüş işlemi durdurur.
gate:user.deleteHesap silme. Dolu dönüş silmeyi durdurur; silme çağrısı false cevabı verir.
gate:user.blockHesap engelleme. Dolu dönüş işlemi durdurur.
gate:user.add_fundsBakiye yükleme — fatura kesilmeden önce. Dolu dönüş işlemi durdurur; metin müşteriye ulaşır.
gate:user.email_changeE-posta değişikliği. Dolu dönüş işlemi durdurur.
gate:user.two_factor_disableİki adımlı doğrulamayı kapatma. Dolu dönüş işlemi durdurur; string de ['message' => '…'] dizisi de geçerli.
gate:user.affiliate_enrollSatış ortaklığına katılım. Dolu dönüş katılımı durdurur; kayıt oluşmaz.
gate:user.affiliate_withdrawalSatış ortaklığı ödeme talebi. Dolu dönüş talebi durdurur.
gate:user.gdpr_processVeri talebinin işlenmesi. Dolu dönüş işlemi durdurur.
gate:user.subuser_inviteAlt hesap daveti. Dolu dönüş daveti durdurur; metin müşteriye ulaşır.
Filtreler
Bu sekizi aynı sözleşmeyi taşımaz. Üç ayrı biçim yan yana durur; hangisine dinleyici yazıyorsanız onun dönüşünü okuyun.
filter:user.required_fieldsKayıt ve profilde zorunlu alanlar. Dizi döndürün; her dinleyicinin dönüşü mevcut listeye eklenir.
filter:user.login_resolveGirilen kimliğin hangi hesaba çözüleceği. Değer referansla değişir; dönüş kullanılmaz.
filter:user.password_verifyParola doğrulaması. true döndürmek parolayı geçerli sayar; diğer her dönüş kullanılmaz.
filter:user.login_redirectGirişten sonra gidilecek yer. Değer referansla değişir; dönüş kullanılmaz.
filter:user.add_funds_amountYüklenecek tutar. Değer referansla değişir; dönüş kullanılmaz.
filter:custom_field.save_valueÖzel alanın kaydedilecek değeri. Değer referansla değişir; dönüş kullanılmaz.
filter:custom_field.load_valueÖzel alanın okunan değeri. Değer referansla değişir; dönüş kullanılmaz.
filter:user.verification_fieldsDoğrulama belgesi alanları. Alanlar referansla değişir; dönüş kullanılmaz.
Örnek
coremio/hooks/acme-account.php
// KAPI: kara listedeki ulkeden hesap acilmasin.
Hook::add('gate:user.create', 10, function ($data) {
$cc = strtoupper((string) ($data['country'] ?? ''));
if (Acme::blockedCountry($cc)) return 'Bu ulkeden kayit alinmiyor.';
return null;
});
// OLAY: acilan hesabi pazarlama listesine yaz.
Hook::add('action:user.created', 10, function ($user_id, $data) {
Crm::subscribe((int) $user_id, (string) ($data['email'] ?? ''));
});
Tuzaklar
Hesabı müşteri de operatör de değiştirebilir
Bu alandaki kancaların çoğu iki yerden çağrılır: müşterinin kendi ekranından ve yönetim panelinden. Bir kapıyı "müşteri şunu yapamasın" diye yazarsanız aynı kural operatörü de durdurur. Kimin yaptığını ayırt etmeniz gerekiyorsa kancanın verdiği aktör bilgisine bakın.
Giriş kapısı parolayı doğrulamaz
Giriş kapısı kimlik doğrulaması geçtikten sonra çalışır. Orada yapacağınız iş parola kontrolü değil, başka bir gerekçeyle durdurmaktır. Parola doğrulamasının kendisine dokunmak istiyorsanız ayrı bir filtre vardır.
Alt hesap ve hesap değiştirme kimliği bulandırır
Bir müşteri başkasının hesabına alt kullanıcı olarak geçebilir. O anda giriş yapan kişi ile üzerinde çalışılan hesap farklıdır. Kancanın verdiği hesap kimliğini kullanın; oturumdan okunan kimlik geçiş sonrası yanlış kişiyi gösterir.
Silme kancası geri alınamaz bir andır
Hesap silindiğinde bağlı kayıtlar da gider. Silme olayı çalıştığında iş çoktan olmuştur; veriye ihtiyacınız varsa kapıda toplayın. Kapı hem daha erkendir hem de gerektiğinde işlemi durdurabilir.