Skip to main content
Base URL: /broadcasting/auth
Bu API, istemcilerin yeni bir kayıt oluşturması veya veri çekmesi için kullanılmaz. Bu endpoint, istemcinin güvenli (private) bir WebSocket kanalına abone olabilmesi (subscribe) için gerekli olan yetkilendirme (handshake) işlemini yapar. İstemciler kanala bağlandıktan sonra sadece gelen olayları (events) dinlerler.

Endpoint özeti

MetotEndpointAçıklamaGerekli Header
POST/broadcasting/authWebSocket kanalına abone olabilmek için yetkilendirme (handshake) yaparAuthorization

Broadcasting (soket) kavramı ve çalışma akışı

Sistemimizde, örneğin sohbetlere (conversations) yeni bir mesaj geldiğinde uygulamayı yenilemeden (refresh atmadan) mesajın ekrana düşmesi için WebSocket altyapısı kullanılır. Güvenlik gereği, bir hastanın veya kliniğin mesajlarının başkaları tarafından dinlenmesini engellemek için tüm kanallar Private (özel) olarak yapılandırılmıştır. İstemci tarafındaki genel akış:
1

Bearer token al

İstemci sisteme giriş yapar ve standart API Bearer Token’ını alır.
2

Kanalı belirt

İstemci (örn. Laravel Echo veya Pusher kütüphanesi) dinlemek istediği kanalı belirtir.
3

Otomatik yetkilendirme

Kütüphane arka planda otomatik olarak POST /broadcasting/auth endpoint’ine elindeki token ile istek atar.
4

Sunucu onayı

Sunucu kullanıcının bu kanalı dinlemeye yetkisi olup olmadığını kontrol eder. Yetkisi varsa soket bağlantısına onay verir.

Dinlenebilir kanallar

Sistemde şu an için dışarıya açık ve dinlenebilir tek bir ana kanal yapısı bulunmaktadır.
Kanal adıAçıklamaÖrnek
chat-log.{tenantId}Belirtilen tenant’a (kliniğe) ait canlı sohbet loglarını ve yeni mesajları yayınlar.chat-log.5 (ID’si 5 olan tenant’ın sohbet kanalı)

Erişim kontrolü (katı iş kuralları)

  • Bu kanala abone olmak isteyen kullanıcının geçerli bir API token’ı olmalıdır.
  • Kullanıcının, kanal adında geçen {tenantId} numaralı tenant’a sistem üzerinden erişim yetkisi olmak zorundadır.
Başka bir kliniğe (tenant’a) ait olan kanalı dinleme isteği reddedilir ve sunucu 403 Forbidden hatası döner.

Yetkilendirme endpoint’i kullanımı

POST /broadcasting/auth
Bu endpoint genellikle manuel olarak çağrılmaz; kullandığınız WebSocket istemci kütüphanesi (Pusher JS, Laravel Echo vb.) tarafından otomatik olarak tetiklenir.

Zorunlu header

Authorization
string
required
Bearer {access_token} formatında geçerli bir access token.

Body

Kütüphanenin gönderdiği channel_name (örn. private-chat-log.5) ve socket_id bilgilerini içerir.

İstemci (frontend / mobil) entegrasyon örneği

Bu API’yi kullanacak olan arayüz geliştiricisinin yapması gereken örnek konfigürasyon (JavaScript / Laravel Echo):
import Echo from 'laravel-echo';

// 1. WebSocket kütüphanesine, yetkilendirme için kullanılacak Token'ı verin
window.axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`;

// 2. Echo nesnesini yapılandırın
const echo = new Echo({
  broadcaster: 'pusher', // veya projenizin kullandığı sağlayıcı
  key: 'your-socket-key',
  cluster: 'your-cluster',
  authEndpoint: '/broadcasting/auth' // Auth endpoint'inin adresi
});

const tenantId = 5; // Kullanıcının aktif çalıştığı tenant ID'si

// 3. Kanala abone olun ve olayları dinlemeye başlayın
echo.private(`chat-log.${tenantId}`)
   .listen('.NewChatMessageEvent', (eventPayload) => {
       console.log('Yeni mesaj geldi!', eventPayload);
       // Arayüzdeki sohbet kutusuna yeni mesajı ekle...
   });
Dinlenecek tam olay (event) adları uygulamanızın yayınladığı isimlere göre .NewChatMessageEvent veya benzeri bir formatta olacaktır.

Yetkilendirme ve kısıtlamalar özeti

KonuKural
Token zorunluluğuStandart auth:api kuralları geçerlidir.
Multi-tenant izolasyonuSoket kanalları da REST API’ler gibi katı bir tenant izolasyonuna tabidir.
YönTek yönlüdür (Server → Client). API tüketicisi WebSocket kanalı üzerinden sunucuya mesaj gönderemez.
Mesaj göndermek için REST endpoint’i kullanılmalıdır: POST /conversations/{id}/messages. WebSocket kanalı sadece gelen olayları dinlemek (subscribe) içindir.