# Müşteri Sitesi Verisi ve Kapıları

https://dev.wisecp.com/tr/musteri-sitesi-verisi-ve-kapilari

Müşteri sitesinin ekran dışı kancaları: veriyi değiştiren 42 filtre, işlem durduran 10 kapı ve olay bildiren 30 kanca.

## Genel Bakış

Ekran kancaları HTML ekler. Buradaki kancalar ise sayfanın **ne göstereceğine** karar veren veriye dokunur, bir işlemi durdurur ya da olup biteni bildirir.

Üçünün ayrımı işinizi nereye yazacağınızı belirler. Listeye satır eklemek istiyorsanız filtre, spam yorumu durdurmak istiyorsanız kapı, dış sisteme haber vermek istiyorsanız olay kancası kullanılır.

## Referans

### Veriyi değiştirenler

Kırk iki filtrenin en çok kullanılanları. Çoğu değeri **referansla** verir; kancanın kaydındaki *Ref* sütunu hangisinin değiştirilebildiğini söyler.

- **filter:client.page.output**: Sayfanın tamamlanmış çıktısı — en geniş müdahale noktası. Değer yerinde, referansla değişir; dönüş kullanılmaz.
- **filter:client.menu**: Site menüsünün ağacı. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.breadcrumb**: Sayfa yolu şeridi. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.dashboard.panels**: Hesap panosundaki paneller. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.dashboard.alerts**: Panodaki uyarı şeritleri. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.list.rows**: Liste satırları — hizmet, fatura, alan adı listeleri. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.service_detail.data**: Hizmet detayının verisi. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.domain_detail.data**: Alan adı detayının verisi. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.invoice_view_data**: Fatura görüntüsünün verisi. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.invoice.taxed_download**: Müşterinin resmileştirilmiş e-fatura dosyasını fatura sayfasından indirip indiremeyeceği. Değer `false` başlar; belgeyi kesen entegrasyon referansla `true` yapar, buton ve indirme ucu görünür. Dönüş kullanılmaz.
- **filter:client.payment_methods**: Müşteriye sunulan ödeme yöntemleri. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.theme**: Kullanılacak tema. Değer referansla değişir; dönüş kullanılmaz.
- **filter:client.routes**: Site yolları. Değer referansla değişir; dönüş kullanılmaz.

### Durduranlar

On kapı. Hepsi aynı sözleşmeyle çalışır: boş olmayan bir string döndürmek işlemi durdurur ve o metin müşteriye hata olarak gösterilir.

- **gate:client.page_access**: Bir sayfaya erişim. Dolu dönüş isteği keser; yönlendiren bir dinleyici isteği kendi bitirmelidir.
- **gate:client.contact_submit**: İletişim formunun kaydı. Dolu dönen ilk dinleyici kaydı durdurur.
- **gate:client.blog_comment**: Blog yorumunun kaydı. Dolu dönen ilk dinleyici kaydı durdurur.
- **gate:client.api_key_create**: Müşterinin yeni API anahtarı açması. Dolu dönüş işlemi durdurur.

### Bildirenler

Otuz olay kancasının çoğu müşterinin hesabında yaptığı işleri bildirir: anahtar açma, yorum yazma, form gönderme.

- **action:client.api_key_created**: Müşteri yeni bir API anahtarı açtı. Dönüş kullanılmaz.
- **action:client.api_key_revoked**: Bir anahtar iptal edildi. Dönüş kullanılmaz.
- **action:client.blog_comment_added**: Bir blog yorumu kaydedildi. Dönüş kullanılmaz.
- **action:client.data_prepared**: Sayfa verisi hazırlandı, çizim başlamak üzere. Dönüş kullanılmaz; veri eklemek için `addData()` kullanın.

### Üç sözleşme yan yana

```php
// FILTRE: panoya kendi panelini ekle (referansla)
Hook::add('filter:client.dashboard.panels', 10, function (&$panels) {
    $panels[] = ['title' => 'Acme', 'body' => AcmePanel::html()];
});

// KAPI: spam skoru yuksekse yorumu durdur
Hook::add('gate:client.blog_comment', 10,
    function ($owner_id, $parent_id, $message) {
        if (Spam::score($message) > 80) return 'Yorumunuz kaydedilemedi.';
        return null;
    });

// OLAY: acilan anahtari denetim kaydina yaz
Hook::add('action:client.api_key_created', 10, function ($owner_id, $new_id, $perms) {
    Audit::keyOpened($owner_id, $new_id, $perms);
});
```

## Tuzaklar

> **Sahip kimliği kancadan gelir, oturumdan değil**
> 
> Müşteri kancalarının çoğu ilk parametrede **hesap kimliğini** verir. Onu kullanın. Oturumdan okumaya çalışmak alt hesap ve hesap değiştirme akışlarında yanlış kişiyi getirir; API üzerinden gelen çağrıda ise oturum **hiç yoktur**.

> **Kapı tek savunma değildir**
> 
> Bir kapı yalnız **o akışta** çalışır. Aynı iş API üzerinden de yapılabiliyorsa oradaki yol bu kapıdan geçmeyebilir. Bir kuralı gerçekten dayatmak istiyorsanız kapının hangi çağrı yollarını kapsadığını kancanın kaydından doğrulayın.

> **Sayfa çıktısı kancası her istekte çalışır**
> 
> Sayfanın tamamlanmış çıktısına dokunan filtre **her sayfa görüntülemesinde** çalışır. İçinde ağır bir sorgu ya da dış çağrı yaparsanız bedelini bütün site öder. Ağır işi önbelleğe alın; dinleyicide yalnız hazır sonucu kullanın.

## İlgili Makaleler

- [Müşteri Sitesi Kancaları](https://dev.wisecp.com/tr/musteri-sitesi-kancalari)
- [Müşteri Hesabı Kancaları](https://dev.wisecp.com/tr/musteri-hesabi-kancalari)
- [Kanca Dinleyicisi Yazma](https://dev.wisecp.com/tr/kanca-dinleyicisi-yazma)
