// Next.js API route support: https://nextjs.org/docs/api-routes/introduction import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@/service/response'; import { connectToDatabase, OpenApi } from '@/service/mongo'; import { authToken } from '@/service/utils/tools'; import { customAlphabet } from 'nanoid'; const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890'); export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { const { authorization } = req.headers; if (!authorization) { throw new Error('缺少登录凭证'); } const userId = await authToken(authorization); await connectToDatabase(); const count = await OpenApi.find({ userId }).countDocuments(); if (count >= 5) { throw new Error('最多 5 组API Key'); } const apiKey = `${userId}-${nanoid()}`; await OpenApi.create({ userId, apiKey }); jsonRes(res, { data: apiKey }); } catch (err) { jsonRes(res, { code: 500, error: err }); } }