mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
|
|
import clonedeep from 'lodash.clonedeep'
|
|
|
|
const setHeadersPlugin = {
|
|
requestDidStart() {
|
|
return {
|
|
willSendResponse(requestContext: any) {
|
|
const { setHeaders = [] } = requestContext.context
|
|
setHeaders.forEach(({ key, value }: { [key: string]: string }) => {
|
|
if (requestContext.response.http.headers.get(key)) {
|
|
requestContext.response.http.headers.set(key, value)
|
|
} else {
|
|
requestContext.response.http.headers.append(key, value)
|
|
}
|
|
})
|
|
return requestContext
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const filterVariables = (variables: any) => {
|
|
const vars = clonedeep(variables)
|
|
if (vars.password) vars.password = '***'
|
|
if (vars.passwordNew) vars.passwordNew = '***'
|
|
return vars
|
|
}
|
|
|
|
const logPlugin = {
|
|
requestDidStart(requestContext: any) {
|
|
const { logger } = requestContext
|
|
const { query, mutation, variables } = requestContext.request
|
|
logger.info(`Request:
|
|
${mutation || query}variables: ${JSON.stringify(filterVariables(variables), null, 2)}`)
|
|
return {
|
|
willSendResponse(requestContext: any) {
|
|
if (requestContext.context.user) logger.info(`User ID: ${requestContext.context.user.id}`)
|
|
if (requestContext.response.data)
|
|
logger.info(`Response-Data:
|
|
${JSON.stringify(requestContext.response.data, null, 2)}`)
|
|
if (requestContext.response.errors)
|
|
logger.error(`Response-Errors:
|
|
${JSON.stringify(requestContext.response.errors, null, 2)}`)
|
|
return requestContext
|
|
},
|
|
}
|
|
},
|
|
}
|
|
|
|
const plugins =
|
|
process.env.NODE_ENV === 'development' ? [setHeadersPlugin] : [setHeadersPlugin, logPlugin]
|
|
|
|
export default plugins
|