Demo del widget (multi-tenant)

Esta página simula un sitio de tercero. Su backend (PHP) firma la identidad del usuario con el secret del tenant y entrega solo el hash al navegador. El widget intercambia {app_id, user, hash} por un token JWT y desde ahí funciona con Authorization: Bearer.

Bloque único en una página del host (server-rendered)

<?php
$tenant_appid  = 'pk_demo0000000000000000';
$tenant_secret = 'TU_TENANT_SECRET';   // nunca se expone al navegador
$tenant_userid = safe_get_user();
$tenant_hash   = hash_hmac('sha256', $tenant_userid, $tenant_secret);
$tenant_username = safe_get_user_fullname();
$tenant_alias    = safe_get_user_alias();
$tenant_avatar   = safe_get_user_avatar();
?>
<div data-chatigniter-chat
     data-app-id="pk_demo0000000000000000"
     data-user-id="<?= $tenant_userid ?>"
     data-user-name="<?= htmlspecialchars($tenant_username) ?>"
     data-user-alias="<?= htmlspecialchars($tenant_alias) ?>"
     data-user-avatar="<?= htmlspecialchars($tenant_avatar) ?>"
     data-user-hash="<?= $tenant_hash ?>"></div>
<script src="https://chat.tu-saas.com/assets/js/chat-widget.js"></script>

Reemplaza las funciones safe_get_*() por tu lógica que devuelve al usuario logueado en tu sistema (id, nombre, alias y URL del avatar).

Modo manual (alternativa)

ChatIgniter.init({
  target: '#miChat',
  appId:  'pk_demo0000000000000000',
  user:   { id: '42', name: 'Ana Pérez', alias: 'ana', avatar: 'https://…' },
  hash:   '<?= $tenant_hash ?>'
});