From b9a79eb435c1d338b271b1726d50e10185466618 Mon Sep 17 00:00:00 2001 From: wancat Date: Tue, 31 Oct 2023 00:27:06 +0800 Subject: [PATCH] feat: add get ip endpoint * rename handler * change rate limit --- server/src/api/controllers/sessionController.js | 2 +- server/src/api/routes/index.js | 4 ++++ server/src/api/routes/sessions.js | 2 +- server/src/index.js | 2 +- server/src/middleware/globalRateLimit.js | 2 +- server/swagger.yaml | 14 ++++++++++++++ 6 files changed, 22 insertions(+), 4 deletions(-) diff --git a/server/src/api/controllers/sessionController.js b/server/src/api/controllers/sessionController.js index 43ea7ca..8bfe782 100644 --- a/server/src/api/controllers/sessionController.js +++ b/server/src/api/controllers/sessionController.js @@ -86,7 +86,7 @@ export async function deleteSessionById(req, res) { } } -export async function getActiveSession(req, res) { +export async function getOrCreateSession(req, res) { const { quest_id } = req.body try { const session = await getOrCreateActiveSession(req.user, quest_id) diff --git a/server/src/api/routes/index.js b/server/src/api/routes/index.js index fde9932..56f3b88 100644 --- a/server/src/api/routes/index.js +++ b/server/src/api/routes/index.js @@ -12,6 +12,10 @@ router.get('/', (req, res) => { res.send('Hello API!') }) +router.get('/ip', (req, res) => { + res.json({ ip: req.ip }) +}) + router.use('/auth', authRouter) router.use('/quests', quests) diff --git a/server/src/api/routes/sessions.js b/server/src/api/routes/sessions.js index 8962045..d6b5f9d 100644 --- a/server/src/api/routes/sessions.js +++ b/server/src/api/routes/sessions.js @@ -6,7 +6,7 @@ const router = Router() router.get('/', sessionController.getSessionList) router.post('/', sessionRateLimit, sessionController.createSession) -router.post('/active', sessionController.getActiveSession) +router.post('/active', sessionController.getOrCreateSession) router.get('/:id', sessionController.getSessionById) router.delete('/:id', sessionController.deleteSessionById) diff --git a/server/src/index.js b/server/src/index.js index 83c7c1d..edad513 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -38,7 +38,6 @@ async function main() { const server = http.createServer(app) socketServer(server) app.set('trust proxy', true) - app.use(errorHandler) app.use(globalRateLimit) app.use(sessionMiddleware) app.use(passport.session()) @@ -56,6 +55,7 @@ async function main() { }) app.use('/api/v1', apiRouter) + app.use(errorHandler) server.listen(config.port, config.host, () => { console.log(`Server listening at ${config.baseUrl}`) diff --git a/server/src/middleware/globalRateLimit.js b/server/src/middleware/globalRateLimit.js index 85cd264..1ca314e 100644 --- a/server/src/middleware/globalRateLimit.js +++ b/server/src/middleware/globalRateLimit.js @@ -2,5 +2,5 @@ import { rateLimit } from 'express-rate-limit' export default rateLimit({ windowMs: 60 * 1000, // 1 minute - max: 20, + max: 100, }) diff --git a/server/swagger.yaml b/server/swagger.yaml index a90f34d..b5cc28a 100644 --- a/server/swagger.yaml +++ b/server/swagger.yaml @@ -519,6 +519,20 @@ paths: description: Invalid request body '401': description: Unauthorized + /ip: + get: + summary: Get client IP address + responses: + '200': + description: IP address + content: + application/json: + schema: + type: object + properties: + ip: + type: string + example: '127.0.0.1' components: schemas: