mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-19 03:42:23 -06:00
sending JWT token when sending webhook if jwt_key exists in webhook header record
This commit is contained in:
@@ -7,6 +7,7 @@ import { Logger } from '@config/logger.config';
|
||||
import { BadRequestException } from '@exceptions';
|
||||
import axios, { AxiosInstance } from 'axios';
|
||||
import { isURL } from 'class-validator';
|
||||
import * as jwt from 'jsonwebtoken';
|
||||
|
||||
import { EmitData, EventController, EventControllerInterface } from '../event.controller';
|
||||
|
||||
@@ -74,7 +75,16 @@ export class WebhookController extends EventController implements EventControlle
|
||||
|
||||
const webhookConfig = configService.get<Webhook>('WEBHOOK');
|
||||
const webhookLocal = instance?.events;
|
||||
const webhookHeaders = instance?.headers;
|
||||
const webhookHeaders = { ...(instance?.headers as Record<string, string> || {}) };
|
||||
|
||||
if (webhookHeaders && 'jwt_key' in webhookHeaders) {
|
||||
const jwtKey = webhookHeaders['jwt_key'];
|
||||
const jwtToken = this.generateJwtToken(jwtKey);
|
||||
webhookHeaders['Authorization'] = `Bearer ${jwtToken}`;
|
||||
|
||||
delete webhookHeaders['jwt_key'];
|
||||
}
|
||||
|
||||
const we = event.replace(/[.-]/gm, '_').toUpperCase();
|
||||
const transformedWe = we.replace(/_/gm, '-').toLowerCase();
|
||||
const enabledLog = configService.get<Log>('LOG').LEVEL.includes('WEBHOOKS');
|
||||
@@ -230,4 +240,24 @@ export class WebhookController extends EventController implements EventControlle
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private generateJwtToken(authToken: string): string {
|
||||
try {
|
||||
const payload = {
|
||||
iat: Math.floor(Date.now() / 1000),
|
||||
exp: Math.floor(Date.now() / 1000) + 600, // 10 min expiration
|
||||
app: 'evolution',
|
||||
action: 'webhook',
|
||||
};
|
||||
|
||||
const token = jwt.sign(payload, authToken, { algorithm: 'HS256' });
|
||||
return token;
|
||||
} catch (error) {
|
||||
this.logger.error({
|
||||
local: 'WebhookController.generateJwtToken',
|
||||
message: `JWT generation failed: ${error?.message}`,
|
||||
});
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user