30 lines
785 B
TypeScript
30 lines
785 B
TypeScript
import { Request, Response, NextFunction } from 'express';
|
|
|
|
/**
|
|
* Middleware to ensure the API key is a master key
|
|
* Must be used AFTER validateApiKey middleware
|
|
*/
|
|
export function requireMasterKey(req: Request, res: Response, next: NextFunction): void {
|
|
if (!req.apiKey) {
|
|
res.status(401).json({
|
|
error: 'Authentication required',
|
|
message: 'This endpoint requires authentication',
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (req.apiKey.keyType !== 'master') {
|
|
console.warn(
|
|
`[${new Date().toISOString()}] Non-master key attempted admin action: ${req.apiKey.id} (${req.apiKey.keyType}) - ${req.path}`,
|
|
);
|
|
|
|
res.status(403).json({
|
|
error: 'Master key required',
|
|
message: 'This endpoint requires a master API key',
|
|
});
|
|
return;
|
|
}
|
|
|
|
next();
|
|
}
|