File size: 582 Bytes
c5813d5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { FastifyRequest } from 'fastify';

/**
 * Accepts two patterns:
 *   1. x-api-key: ADMIN_API_KEY           (direct header)
 *   2. Authorization: Bearer ADMIN_API_KEY (worker internal calls via api-client.ts)
 */
export const validateApiKey = async (request: FastifyRequest): Promise<boolean> => {
    const apiKey = process.env.ADMIN_API_KEY;
    if (!apiKey) return false;

    if (request.headers['x-api-key'] === apiKey) return true;

    const authHeader = request.headers['authorization'];
    if (authHeader === `Bearer ${apiKey}`) return true;

    return false;
};