Hizmet Devir Kancaları
Bir hizmetin sahibini değiştiren yedi kanca: devir talebi, alıcının onayı, ret ve vazgeçme.
Genel Bakış
Devir iki tarafın rızasını ister: mevcut sahip başlatır, alıcı onaylar. Arada bekleyen bir kayıt durur ve iki taraftan biri vazgeçebilir.
Bu kancalar tip ayrımı yapmaz: barındırma, sunucu ve alan adı aynı akıştan geçer. Alan adına özgü bir kural yazacaksanız hizmet tipini kendiniz kontrol edin.
Referans
Devir talebini durdurma
Mevcut sahip devri başlattığında, bekleyen kayıt yazılmadan önce çalışır.
type alanı domain da olabilir.Hook::add('gate:service.transfer_request', 10,
function ($service, $from_id, $to_id) {
// Ucretsiz gelistirici lisansi devredilemez: kendi kuralinizi burada yazin.
if (Acme::nonTransferable($service))
return 'Bu hizmet baska bir hesaba devredilemez.';
return null;
});Devir talebini izleme
Bekleyen devir kaydı oluşturulduktan sonra çalışır. Hizmet hâlâ eski sahiptedir.
Hook::add('action:service.transfer.requested', 10,
function ($service, $data, $uid) {
// $data VERI PAKETIDIR (event satiri degil): alanlari dogrudan okuyun.
Audit::transferOpened((int) ($service['id'] ?? 0),
(int) ($data['from_id'] ?? 0), (int) ($data['to_id'] ?? 0));
});Devir onayını durdurma
Alıcı devri kabul ettiğinde, sahiplik geçmeden önce çalışır.
Hook::add('gate:service.transfer_approve', 10,
function ($service, $from_id, $to_id) {
// Aliciyi da denetleyin: dogrulanmamis hesaba hizmet gecmesin.
if (!Acme::verifiedAccount($to_id))
return 'Alici hesap dogrulanmamis.';
return null;
});Devrin tamamlandığını öğrenme
Sahiplik yeni hesaba geçtikten sonra çalışır.
id, full_name, email.Hook::add('action:service.transfer.approved', 10,
function ($serviceId, $fromId, $toId, $newOwner) {
// Eski sahibin erisimini kesin: hizmet artik onun degil.
Acme::revokeAccess($fromId, $serviceId);
Acme::grantAccess($toId, $serviceId);
});Devrin reddedilmesini izleme
Alıcı devri reddettiğinde çalışır.
service_id, service_name, gönderen ve alıcı bilgileri. Bu kanca hizmet kaydı vermez; kimliğe ihtiyacınız varsa buradan alın.Hook::add('action:service.transfer.rejected', 10, function ($me, $data) {
// Hizmet kaydi GELMEZ: id'yi veri paketinden alin.
Crm::transferRefused((int) ($data['service_id'] ?? 0), (int) ($data['from_id'] ?? 0));
});Devirden vazgeçmeyi izleme
Mevcut sahip bekleyen devirden vazgeçtiğinde çalışır.
Hook::add('action:service.transfer.cancelled', 10, function ($service, $pending) {
// Burada $pending KAYIT SATIRIDIR: veri bir alt seviyededir.
$payload = $pending['data'] ?? [];
Audit::transferClosed((int) ($service['id'] ?? 0), (int) ($payload['to_id'] ?? 0));
});Davetin yeniden gönderilmesini izleme
Mevcut sahip devir davetini yeniden gönderdiğinde çalışır. Bekleyen kayıt değişmez, yalnız bildirim tekrarlanır.
Hook::add('action:service.transfer.resent', 10, function ($service, $pending) {
// Tekrarlanabilir: ust uste gonderimi kendi tarafinizda sinirlayin.
Acme::countResend((int) ($service['id'] ?? 0));
});Tuzaklar
Devir talebinde ikinci parametre veri paketidir; vazgeçme ve yeniden gönderme kancalarında ise aynı sıra kayıt satırının kendisini taşır ve veri bir alt seviyededir. Birini diğeri sanmak boş alan okutur: hata çıkmaz, değer gelmez.
Devir kancaları hizmet tipine bakmaz. Barındırma için yazdığınız bir kural alan adı devirlerine de uygulanır. Yalnız bir tipi hedefliyorsanız hizmet kaydındaki tip alanını ilk satırda kontrol edin.
Reddetme kancasında yalnız reddeden hesabın kimliği ve devir verisi gelir; hizmet kaydı yoktur. Diğer devir kancalarına alışmış bir dinleyici burada hizmet adını ararken boş bulur. Kimliği veri paketinden alıp kaydı kendiniz okuyun.
Talep kapısı gönderen tarafı, onay kapısı alıcı tarafı denetler. "Bu hizmet devredilemez" kuralı talep kapısına, "bu hesap hizmet alamaz" kuralı onay kapısına yazılır. İkisini tek yere yazmak, akışın diğer ucunu açık bırakır.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.