# Alan Adı Doğrulama Kancaları

https://dev.wisecp.com/tr/alan-adi-dogrulama-kancalari

Kayıt sahibi doğrulaması ve sağlayıcıdan okuma yapan sekiz kanca — okumanın bile kendi kapısı vardır.

## Genel Bakış

Bazı uzantılar kayıt sahibinin kimliğini **belgeyle** doğrulamasını ister. Doğrulanmayan ad askıya alınabilir, o yüzden bu akışın kendi kancaları vardır: gönderimi durduran bir kapı, sonucunu bildiren bir olay ve ekranın tamamını veren bir filtre.

İkinci grup daha az bilinir: **okuma kapıları**. Ad sunucusu ya da kişi bilgisi okumak sağlayıcıya gerçek bir istek demektir, o yüzden okumanın da önünde bir kapı durur.

## Referans

### Doğrulama gönderimini durdurma

gatedomain.verification_submit

`ClientDomains` dosya işlenmeden

Gönderilen belgeler işlenmeden ve **hiçbir şey kaydedilmeden** çalışır.

Parametreler 3

$servicearrayAlan adı hizmet kaydı.

$defsarrayUzantının istediği alan tanımları: her biri `key`, `type`, `name`, `required`, `options`. Tanımlar uzantıya ve modüle göre değişir.

$tldstringAdın uzantısı.

Dönüş 1

stringBoş olmayan bir string gönderimi **durdurur**; hiçbir dosya işlenmez ve hiçbir alan yazılmaz.

Dinleyici PHP

```php
Hook::add('gate:domain.verification_submit', 10, function ($service, $defs, $tld) {
    // Ayni ad icin acik bir inceleme varken ikinci gonderim karisiklik yaratir.
    if (Acme::reviewOpen((int) ($service['id'] ?? 0)))
        return 'Onceki gonderiminiz hala inceleniyor.';

    return null;
});
```

### Doğrulama gönderimini izleme

actiondomain.verification_submitted

`ClientDomains` kaç alan yazıldı

Belgeler işlenip alanlar kaydedildikten sonra çalışır.

Parametreler 3

$servicearrayAlan adı hizmet kaydı.

$submittedintBaşarıyla kaydedilen alan sayısı. Sıfır olabilir: gönderim yapıldı ama hiçbir alan yazılmadı demektir.

$defsarrayUzantının alan tanımları.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.verification_submitted', 10,
    function ($service, $submitted, $defs) {
        // Sifir alan yazildiysa gonderim bos gecmistir: incelemeye dusmesin.
        if ($submitted > 0) Ops::queue('registrant-review', $service['id'] ?? 0);
    });
```

### Doğrulama ekranını değiştirme

filterdomain.verification_state

`Hook::runRefs` üç anahtar korunur

Doğrulama ekranının tüm yükü hazırlandıktan sonra, görünmeden önce çalışır.

Parametreler 2

$dataarrayrefEkran yükü: `state` (`none`, `form`, `review`, `rejected`, `verified`), `fields`, `operator_note`. `state` hangi kabuğun gösterileceğini seçer; üç anahtarı da bırakın.

$servicearrayAlan adı hizmet kaydı.

Dönüş 1

voidDeğer **referansla** değişir; dönüş kullanılmaz.

Dinleyici PHP

```php
Hook::add('filter:domain.verification_state', 10, function (&$data, $service) {
    // state/fields/operator_note ucunu de birak; JS kabugu state'e gore secer.
    if (($data['state'] ?? '') === 'rejected')
        $data['operator_note'] = Acme::helpText($data['operator_note'] ?? '');
});
```

### Kişi okumasını durdurma

gatedomain.contacts_get

`AdminServices` salt okuma

Kişi bilgileri sağlayıcıdan okunmadan önce çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$serviceIdintHizmet kimliği.

Dönüş 1

stringBoş olmayan bir string okumayı **durdurur**; metin hata olarak fırlatılır ve sağlayıcıya gidilmez.

Dinleyici PHP

```php
Hook::add('gate:domain.contacts_get', 10, function ($service, $serviceId) {
    // Saglayici sorgu basina ucret aliyorsa okumayi sinirlayin.
    if (Acme::readQuotaSpent($serviceId)) return 'Bugunku sorgu hakki doldu.';

    return null;
});
```

### Okunan kişi bilgisini izleme

actiondomain.contacts_fetched

`AdminServices` sağlayıcıdan geldi

Kişi bilgileri sağlayıcıdan okunduktan sonra çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$whoisarraySağlayıcıdan okunan kişi verisi.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.contacts_fetched', 10, function ($service, $whois) {
    // Kisisel veri: loglamayin, yalniz ayrisma var mi diye bakin.
    Acme::compareMirror((int) ($service['id'] ?? 0), $whois);
});
```

### Ad sunucusu okumasını durdurma

gatedomain.nameservers_get

`AdminServices` salt okuma

Ad sunucuları sağlayıcıdan okunmadan önce çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$serviceIdintHizmet kimliği.

Dönüş 1

stringBoş olmayan bir string okumayı **durdurur**; metin hata olarak fırlatılır ve sağlayıcıya gidilmez.

Dinleyici PHP

```php
Hook::add('gate:domain.nameservers_get', 10, function ($service, $serviceId) {
    if (($service['status'] ?? '') === 'transfer')
        return 'Transfer surerken ad sunuculari okunamaz.';

    return null;
});
```

### Okunan ad sunucularını izleme

actiondomain.nameservers_fetched

`AdminServices` normalleştirilmiş liste

Ad sunucuları sağlayıcıdan okunduktan sonra çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$nameserversarrayOkunan liste, normalleştirilmiş ve sıralı.

Dönüş 1

voidDönüş yoksayılır.

Dinleyici PHP

```php
Hook::add('action:domain.nameservers_fetched', 10, function ($service, $nameservers) {
    // Saglayicidaki deger bizimkinden farkliysa ayrisma var demektir.
    Acme::driftCheck((int) ($service['id'] ?? 0), $nameservers);
});
```

### DNS kaydı okumasını durdurma

gatedomain.dns_records_get

`AdminServices` salt okuma

DNS kayıtları sağlayıcıdan okunmadan önce çalışır.

Parametreler 2

$servicearrayAlan adı hizmet kaydı.

$serviceIdintHizmet kimliği.

Dönüş 1

stringBoş olmayan bir string okumayı **durdurur**; metin hata olarak fırlatılır ve sağlayıcıya gidilmez.

Dinleyici PHP

```php
Hook::add('gate:domain.dns_records_get', 10, function ($service, $serviceId) {
    // DNS yonetimi ek hizmeti yoksa okuma da anlamsizdir.
    if (!Acme::addonActive($serviceId, 'dns-manage')) return 'DNS yonetimi kapali.';

    return null;
});
```

## Tuzaklar

> **Okuma kapısı ekranı boş bırakır**
> 
> Okumayı durdurmak yalnız isteği kesmez: ekranda o bölüm **hiç dolmaz** ve müşteri ya da operatör nedenini anlamayabilir. Döndürdüğünüz metin kullanıcıya gösterilir, o yüzden neyin neden durdurulduğunu **o cümlede** söyleyin.

> **Okunan kişi verisi kişisel veridir**
> 
> Kişi okuma kancası size ad, adres, telefon ve e-posta verir. Bunu loglara, dış sistemlere ya da bildirim gövdelerine **koymayın**. Karşılaştırma yapmanız gerekiyorsa değerleri değil, **farkın var olup olmadığını** saklayın.

> **Doğrulama ekranı üç anahtardan kurulur**
> 
> Ekran kabuğunu `state` seçer; alanları `fields` doldurur; ret gerekçesini `operator_note` taşır. Birini düşürmek ekranı bozar: örneğin `state` olmadan hangi kabuğun görüneceği bilinemez.

> **Sıfır alan da bir gönderimdir**
> 
> Doğrulama olayı, hiçbir alan yazılmadığında da çalışır ve sayacı `0` gelir. Sayıyı okumadan "belge geldi" varsaymak, boş bir gönderimi incelemeye düşürür.

## İlgili Makaleler

- [Alan Adı Kişi Kancaları](https://dev.wisecp.com/tr/alan-adi-kisi-kancalari)
- [Alan Adı DNS Kancaları](https://dev.wisecp.com/tr/alan-adi-dns-kancalari)
- Alan Adı Kancaları
