link-stack/apps/link/pages/api/proxy/[[...path]].ts

40 lines
892 B
TypeScript
Raw Normal View History

2023-03-01 11:02:15 +00:00
import { NextApiRequest, NextApiResponse } from 'next';
import { createProxyMiddleware } from 'http-proxy-middleware';
import { getToken } from "next-auth/jwt";
const withAuthInfo =
(handler) => async (req: NextApiRequest, res: NextApiResponse) => {
const session = await getToken({
req,
secret: process.env.NEXTAUTH_SECRET,
});
if (!session) {
return res.redirect("/login");
}
2023-03-29 14:43:27 +02:00
if (req.headers) {
req.headers['X-Forwarded-User'] = session.email.toLowerCase();
req.headers['host'] = 'zammad.example.com';
2023-03-07 14:09:49 +00:00
}
2023-03-01 11:02:15 +00:00
return handler(req, res);
};
const proxy = createProxyMiddleware({
target: process.env.ZAMMAD_URL,
changeOrigin: true,
xfwd: true,
2023-03-29 14:43:27 +02:00
ws: false,
2023-03-01 11:02:15 +00:00
pathRewrite: { "^/zammad": "" },
});
export default withAuthInfo(proxy);
export const config = {
api: {
bodyParser: false,
externalResolver: true,
},
};