mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* refactor media-type next.js API resource to mitigate request forgery attack * fix typescript
31 lines
897 B
TypeScript
31 lines
897 B
TypeScript
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
|
|
import buildUrl from 'nextjs/utils/buildUrl';
|
|
import fetchFactory from 'nextjs/utils/fetchProxy';
|
|
import { httpLogger } from 'nextjs/utils/logger';
|
|
|
|
import isNeedProxy from 'lib/api/isNeedProxy';
|
|
|
|
export default async function csrfHandler(_req: NextApiRequest, res: NextApiResponse) {
|
|
if (!isNeedProxy()) {
|
|
res.status(404).json({ error: 'Not found' });
|
|
return;
|
|
}
|
|
|
|
httpLogger(_req, res);
|
|
|
|
const url = buildUrl('general:csrf');
|
|
const response = await fetchFactory(_req)(url);
|
|
|
|
if (response.status === 200) {
|
|
const token = response.headers.get('x-bs-account-csrf');
|
|
res.status(200).json({ token });
|
|
return;
|
|
}
|
|
|
|
const responseError = { statusText: response.statusText, status: response.status };
|
|
httpLogger.logger.error({ err: responseError, url: _req.url });
|
|
|
|
res.status(500).json(responseError);
|
|
}
|