From 7d056ffd572d5b00bf032f39c41742c0d643c5f6 Mon Sep 17 00:00:00 2001 From: ggq-admin Date: Sun, 19 Oct 2025 17:02:21 +0200 Subject: [PATCH] fix(search): correct tenant token filter quoting and ensure string return --- server/config/meilisearch.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/config/meilisearch.js b/server/config/meilisearch.js index 0af6798..dc2b512 100644 --- a/server/config/meilisearch.js +++ b/server/config/meilisearch.js @@ -72,16 +72,21 @@ async function configureIndex(index) { export function generateTenantToken(userId, organizationIds, expiresIn = 3600) { const client = getMeilisearchClient(); + // Quote string values for Meilisearch filter syntax + const orgList = (organizationIds || []).map((id) => `"${id}"`).join(', '); + const filter = `userId = "${userId}" OR organizationId IN [${orgList}]`; + const searchRules = { - [INDEX_NAME]: { - filter: `userId = ${userId} OR organizationId IN [${organizationIds.join(', ')}]` - } + [INDEX_NAME]: { filter } }; const expiresAt = new Date(Date.now() + expiresIn * 1000); - return client.generateTenantToken(searchRules, { + // Ensure a string is returned across client versions + const token = client.generateTenantToken(searchRules, { apiKey: MEILISEARCH_MASTER_KEY, expiresAt }); + + return typeof token === 'string' ? token : String(token); }