From f4a730422c62ff7d4ec4d58df2559341f57d0c74 Mon Sep 17 00:00:00 2001 From: alma Date: Thu, 22 May 2025 18:37:45 +0200 Subject: [PATCH] W n8n --- app/api/missions/route.ts | 39 ++++--------------------------------- lib/services/n8n-service.ts | 10 +++++++++- 2 files changed, 13 insertions(+), 36 deletions(-) diff --git a/app/api/missions/route.ts b/app/api/missions/route.ts index 108ff61b..eda71d63 100644 --- a/app/api/missions/route.ts +++ b/app/api/missions/route.ts @@ -14,38 +14,7 @@ interface MissionUserInput { } // Helper function to check authentication -async function checkAuth(request: Request, body?: any) { - // Check for service account API key first - const apiKey = request.headers.get('x-api-key'); - console.log('API key from header:', apiKey); - console.log('API key from env:', process.env.N8N_API_KEY); - console.log('Keys match:', apiKey === process.env.N8N_API_KEY); - if (apiKey === process.env.N8N_API_KEY) { - // For service account, use the creatorId from the request body - if (body?.creatorId) { - console.log('Using creatorId from request body:', body.creatorId); - // Verify the user exists - const user = await prisma.user.findUnique({ - where: { id: body.creatorId } - }); - if (!user) { - console.error('Creator user not found:', body.creatorId); - return { authorized: false, userId: null }; - } - return { authorized: true, userId: body.creatorId }; - } - // Fallback to system user if no creatorId provided - console.log('No creatorId provided, using system user'); - // Use the first user in the database as system user - const systemUser = await prisma.user.findFirst(); - if (!systemUser) { - console.error('No users found in database for system user fallback'); - return { authorized: false, userId: null }; - } - return { authorized: true, userId: systemUser.id }; - } - - // Fall back to NextAuth session for regular users +async function checkAuth(request: Request) { const session = await getServerSession(authOptions); if (!session?.user?.id) { console.error('Unauthorized access attempt:', { @@ -150,8 +119,8 @@ export async function GET(request: Request) { // POST endpoint to create a new mission export async function POST(request: Request) { try { - const session = await getServerSession(authOptions); - if (!session?.user) { + const { authorized, userId } = await checkAuth(request); + if (!authorized || !userId) { console.error('Unauthorized access attempt - no session or user'); return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } @@ -209,7 +178,7 @@ export async function POST(request: Request) { services: Array.isArray(services) ? services.filter(Boolean) : [], profils: Array.isArray(profils) ? profils.filter(Boolean) : [], participation, - creatorId: session.user.id + creatorId: userId } }); diff --git a/lib/services/n8n-service.ts b/lib/services/n8n-service.ts index cc33ab1a..295e541a 100644 --- a/lib/services/n8n-service.ts +++ b/lib/services/n8n-service.ts @@ -10,12 +10,17 @@ export class N8nService { this.webhookUrl = process.env.N8N_WEBHOOK_URL || 'https://brain.slm-lab.net/webhook/mission-created'; this.rollbackWebhookUrl = process.env.N8N_ROLLBACK_WEBHOOK_URL || 'https://brain.slm-lab.net/webhook/mission-rollback'; this.apiKey = process.env.N8N_API_KEY || ''; + + if (!this.apiKey) { + console.error('N8N_API_KEY is not set in environment variables'); + } } async triggerMissionCreation(data: any): Promise { try { console.log('Triggering n8n workflow with data:', JSON.stringify(data, null, 2)); console.log('Using webhook URL:', this.webhookUrl); + console.log('API key present:', !!this.apiKey); // Log the full request details const requestDetails = { @@ -83,6 +88,7 @@ export class N8nService { try { console.log('Triggering n8n rollback workflow with data:', JSON.stringify(data, null, 2)); console.log('Using rollback webhook URL:', this.rollbackWebhookUrl); + console.log('API key present:', !!this.apiKey); const response = await fetch(this.rollbackWebhookUrl, { method: 'POST', @@ -94,7 +100,9 @@ export class N8nService { }); if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); + const errorText = await response.text(); + console.error('Rollback webhook error response:', errorText); + throw new Error(`HTTP error! status: ${response.status}, body: ${errorText}`); } const result = await response.json();