This commit is contained in:
alma 2025-05-22 18:37:45 +02:00
parent bc5f30fd06
commit f4a730422c
2 changed files with 13 additions and 36 deletions

View File

@ -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
}
});

View File

@ -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<any> {
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();