Widget HMAC gizli anahtarını ver; yoksa ÜRET ve sakla.
── NEDEN VAR (2026-08-19) ─────────────────────────────────────────────────── Panelin Canlı Sohbet → Güvenlik ekranında "Gizli anahtarı kopyala" düğmesi vardı ve **boş dize kopyalıyordu**: değeri `data.server.widget_hmac_secret`ten okuyordu, oysa anahtar `lc.widget_hmac_secret`te yaşar ve `admin_server()` o alanı ASLA üretmez. Üstelik anahtarı YARATAN bir kod da yoktu; yani "Kimlik doğrulamasını zorunlu kıl" şalterini açan kiracıda HMAC doğrulaması hiçbir zaman başarılı olamıyordu (`verify_widget_hmac("")`) — dış veri sessizce yok sayılıyordu ve bunun nedenini söyleyen hiçbir ekran yoktu. ⚠ Anahtar SECRET_KEYS'tedir: depoya `settings::save` ile yazılır (at-rest mühürlenir) ve `settings::get_secret` ile çözülerek okunur. `settings::load` ile ham okumak MÜHÜRLÜ metni verir — doğrulama tarafı da bu yüzden `get_secret`e taşındı (`widget_auth::load_widget_secret`). ⚠ Yetki `crm.settings.update`: salt-okur ayar yetkisi olan kullanıcı sırları zaten `settings_payload`ta redakte görür; buradan açık okuyabilseydi o redaksiyonun bir anlamı kalmazdı.
curl -X POST "https://{slug}.crm.blesyum.app/api/crm/v1/livechat/widget-secret" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}