mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-02-21 11:02:43 +00:00
39 lines
984 B
TypeScript
39 lines
984 B
TypeScript
/*
|
|
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
import { registerAs } from '@nestjs/config';
|
|
import * as Joi from 'joi';
|
|
|
|
import { buildErrorMessage } from './utils';
|
|
|
|
export interface CspConfig {
|
|
enable: boolean;
|
|
reportURI: string;
|
|
}
|
|
|
|
const cspSchema = Joi.object({
|
|
enable: Joi.boolean().default(true).optional().label('HD_CSP_ENABLE'),
|
|
reportURI: Joi.string().optional().label('HD_CSP_REPORT_URI'),
|
|
});
|
|
|
|
export default registerAs('cspConfig', () => {
|
|
const cspConfig = cspSchema.validate(
|
|
{
|
|
enable: process.env.HD_CSP_ENABLE || true,
|
|
reportURI: process.env.HD_CSP_REPORT_URI,
|
|
},
|
|
{
|
|
abortEarly: false,
|
|
presence: 'required',
|
|
},
|
|
);
|
|
if (cspConfig.error) {
|
|
const errorMessages = cspConfig.error.details.map(
|
|
(detail) => detail.message,
|
|
);
|
|
throw new Error(buildErrorMessage(errorMessages));
|
|
}
|
|
return cspConfig.value as CspConfig;
|
|
});
|