generated from nhcarrigan/template
28 lines
792 B
TypeScript
28 lines
792 B
TypeScript
/**
|
|
* @copyright 2026 NHCarrigan
|
|
* @license Naomi's Public License
|
|
* @author Naomi Carrigan
|
|
*/
|
|
|
|
import { FastifyPluginAsync } from "fastify";
|
|
import fastifyPlugin from "fastify-plugin";
|
|
import fastifyHelmet from "@fastify/helmet";
|
|
|
|
const helmetPlugin: FastifyPluginAsync = async (app) => {
|
|
await app.register(fastifyHelmet, {
|
|
contentSecurityPolicy: {
|
|
directives: {
|
|
defaultSrc: ["'self'"],
|
|
styleSrc: ["'self'", "'unsafe-inline'"],
|
|
imgSrc: ["'self'", "data:", "https:"],
|
|
scriptSrc: ["'self'"],
|
|
connectSrc: ["'self'", process.env.FRONTEND_URL ?? "http://localhost:4200"],
|
|
},
|
|
},
|
|
crossOriginEmbedderPolicy: false,
|
|
crossOriginResourcePolicy: { policy: "cross-origin" },
|
|
});
|
|
};
|
|
|
|
export default fastifyPlugin(helmetPlugin);
|