# Müşteri Hesabı Kancaları

https://dev.wisecp.com/tr/musteri-hesabi-kancalari

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.created**: Hesap açıldı. Dönüş kullanılmaz.
- **action:user.updated**: Hesap bilgisi değişti. Dönüş kullanılmaz.
- **action:user.status_changed**: Hesap durumu değişti. Dönüş kullanılmaz.
- **action:user.account_blocked**: Hesap engellendi ya da engeli kalktı. Dönüş kullanılmaz.
- **action:user.deleted**: Hesap silindi. Dönüş kullanılmaz.
- **action:user.deleted_dormant**: Uzun süre kullanılmayan hesap otomatik silindi. Dönüş kullanılmaz.

### Giriş ve güvenlik

- **action:user.logged_in**: Giriş yapıldı. Dönüş kullanılmaz.
- **action:user.login_failed**: Giriş denemesi başarısız. Dönüş kullanılmaz.
- **action:user.logged_in_as**: Bir personel müşteri hesabına geçti. Dönüş kullanılmaz.
- **action:user.password_changed**: Parola 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_revoked**: Bir oturum sonlandırıldı. Dönüş kullanılmaz.
- **action:user.account_switched**: Müş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.create**: Hesap açma. Dolu dönüş işlemi durdurur; o metin hata mesajı olur.
- **gate:user.login**: Giriş — parola doğrulandıktan sonra. Dolu dönüş girişi durdurur; string de `['message' => '…']` dizisi de geçerli.
- **gate:user.login_as**: Personelin müşteri hesabına geçmesi. Dolu dönüş işlemi durdurur.
- **gate:user.delete**: Hesap silme. Dolu dönüş silmeyi durdurur; silme çağrısı `false` cevabı verir.
- **gate:user.block**: Hesap engelleme. Dolu dönüş işlemi durdurur.
- **gate:user.add_funds**: Bakiye yükleme — fatura kesilmeden önce. Dolu dönüş işlemi durdurur; metin müşteriye ulaşır.
- **gate:user.email_change**: E-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_enroll**: Satış ortaklığına katılım. Dolu dönüş katılımı durdurur; kayıt oluşmaz.
- **gate:user.affiliate_withdrawal**: Satış ortaklığı ödeme talebi. Dolu dönüş talebi durdurur.
- **gate:user.gdpr_process**: Veri talebinin işlenmesi. Dolu dönüş işlemi durdurur.
- **gate:user.subuser_invite**: Alt 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_fields**: Kayıt ve profilde zorunlu alanlar. Dizi döndürün; her dinleyicinin dönüşü mevcut listeye eklenir.
- **filter:user.login_resolve**: Girilen kimliğin hangi hesaba çözüleceği. Değer referansla değişir; dönüş kullanılmaz.
- **filter:user.password_verify**: Parola doğrulaması. `true` döndürmek parolayı geçerli sayar; diğer her dönüş kullanılmaz.
- **filter:user.login_redirect**: Girişten sonra gidilecek yer. Değer referansla değişir; dönüş kullanılmaz.
- **filter:user.add_funds_amount**: Yü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_fields**: Doğrulama belgesi alanları. Alanlar referansla değişir; dönüş kullanılmaz.

### Örnek

```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.

## İlgili Makaleler

- [Müşteri Sitesi Verisi ve Kapıları](https://dev.wisecp.com/tr/musteri-sitesi-verisi-ve-kapilari)
- [Hizmet Yaşam Döngüsü Kancaları](https://dev.wisecp.com/tr/hizmet-yasam-dongusu-kancalari)
- [Kanca Dinleyicisi Yazma](https://dev.wisecp.com/tr/kanca-dinleyicisi-yazma)
