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