fix(integrations): support parsedBody in authenticateIntegrationRequest
This commit is contained in:
@@ -10,7 +10,7 @@ export async function POST(req: NextRequest) {
|
||||
return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 });
|
||||
}
|
||||
|
||||
const auth = await authenticateIntegrationRequest(req, { requireTenant: true });
|
||||
const auth = await authenticateIntegrationRequest(req, { requireTenant: true, parsedBody: body });
|
||||
if (!auth.ok) {
|
||||
return auth.errorResponse!;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ export async function POST(req: NextRequest) {
|
||||
return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 });
|
||||
}
|
||||
|
||||
const auth = await authenticateIntegrationRequest(req, { requireTenant: true });
|
||||
const auth = await authenticateIntegrationRequest(req, { requireTenant: true, parsedBody: body });
|
||||
if (!auth.ok) {
|
||||
return auth.errorResponse!;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ export interface IntegrationAuthResult {
|
||||
*/
|
||||
export async function authenticateIntegrationRequest(
|
||||
req: NextRequest,
|
||||
options: { requireTenant?: boolean } = { requireTenant: true }
|
||||
options: { requireTenant?: boolean; parsedBody?: any } = { requireTenant: true }
|
||||
): Promise<IntegrationAuthResult> {
|
||||
const apiKey = req.headers.get('x-api-key') || req.headers.get('X-Api-Key');
|
||||
const n8nKey = process.env.N8N_API_KEY?.trim();
|
||||
@@ -45,18 +45,22 @@ export async function authenticateIntegrationRequest(
|
||||
return { ok: true, caller };
|
||||
}
|
||||
|
||||
// Extraer tenant_id o client_id de query params o body
|
||||
// Extraer tenant_id o client_id de query params o parsedBody
|
||||
let tenantId =
|
||||
req.nextUrl.searchParams.get('tenant_id') ||
|
||||
req.nextUrl.searchParams.get('client_id');
|
||||
|
||||
if (!tenantId && options.parsedBody) {
|
||||
tenantId = options.parsedBody.tenant_id || options.parsedBody.client_id;
|
||||
}
|
||||
|
||||
if (!tenantId && req.method !== 'GET') {
|
||||
try {
|
||||
const cloned = req.clone();
|
||||
const body = await cloned.json();
|
||||
tenantId = body.tenant_id || body.client_id;
|
||||
} catch {
|
||||
// Ignorar error al parsear body si no viene JSON
|
||||
// Ignorar
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user