From 3c13b19fa471c5bf3763727260dccbdb1a119abe Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Thu, 26 Sep 2024 17:21:34 +0530 Subject: [PATCH] feat: generate api ket --- server/src/routes/api.ts | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 server/src/routes/api.ts diff --git a/server/src/routes/api.ts b/server/src/routes/api.ts new file mode 100644 index 00000000..9dd81595 --- /dev/null +++ b/server/src/routes/api.ts @@ -0,0 +1,42 @@ +import { Router, Request, Response } from 'express'; +import { genAPIKey } from '../utils/api'; +import User from '../models/User'; + +export const router = Router(); + +interface AuthenticatedRequest extends Request { + user?: { id: string }; +} + +router.get('/generate-api-key', async (req: AuthenticatedRequest, res) => { + try { + if (!req.user) { + return res.status(401).json({ ok: false, error: 'Unauthorized' }); + } + const user = await User.findByPk(req.user.id, { + attributes: { exclude: ['password'] }, + }); + + if (!user) { + return res.status(404).json({ message: 'User not found' }); + } + + // Check if user already has an API key + if (user.api_key) { + return res.status(400).json({ message: 'API key already exists' }); + } + + const apiKey = genAPIKey(); + + user.api_key = apiKey; + await user.save(); + + return res.status(200).json({ + message: 'API key generated successfully', + api_key: apiKey, + }); + } catch (error) { + return res.status(500).json({ message: 'Error generating API key', error }); + } + }); + \ No newline at end of file