Add server ID to Intercom JWT payload (#5769)

This commit is contained in:
aecsocket
2026-04-07 23:14:15 +01:00
committed by GitHub
parent e71a8c10fa
commit de4f0bffb0
2 changed files with 12 additions and 2 deletions

View File

@@ -1335,7 +1335,9 @@ async function initializeIntercom() {
if (!auth.value?.user) return
try {
const intercomData = await $fetch<{ token: string }>('/api/intercom/messenger-jwt')
const intercomData = await $fetch<{ token: string }>('/api/intercom/messenger-jwt', {
query: { server_id: serverId },
})
Intercom({
app_id: config.public.intercomAppId,

View File

@@ -21,6 +21,7 @@ async function getIntercomKeyFromSecretsStore(): Promise<string | undefined> {
async function signIntercomUserJwt(
user: { id: string; username: string; email?: string; created: string },
secret: string,
serverId?: string,
): Promise<string> {
const createdAt = Math.floor(new Date(user.created).getTime() / 1000)
@@ -37,6 +38,10 @@ async function signIntercomUserJwt(
payload.created_at = createdAt
}
if (serverId) {
payload.server_id = serverId
}
return await new SignJWT(payload)
.setProtectedHeader({ alg: 'HS256', typ: 'JWT' })
.setIssuedAt()
@@ -104,7 +109,10 @@ export default defineEventHandler(async (event): Promise<IntercomTokenResponse>
})
}
const token = await signIntercomUserJwt(user, intercomSecret)
const query = getQuery(event)
const serverId = typeof query.server_id === 'string' ? query.server_id : undefined
const token = await signIntercomUserJwt(user, intercomSecret, serverId)
return {
token,