mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-13 06:34:39 -04:00
33 lines
850 B
JavaScript
33 lines
850 B
JavaScript
'use strict'
|
|
|
|
const { rateLimit } = require('express-rate-limit')
|
|
const errors = require('../../errors')
|
|
const config = require('../../config')
|
|
|
|
const determineKey = (req) => {
|
|
if (req.user) {
|
|
return req.user.id
|
|
}
|
|
return req.header('cf-connecting-ip') || req.ip
|
|
}
|
|
|
|
// limits requests to user endpoints (login, signup) to 10 requests per 5 minutes
|
|
const userEndpoints = rateLimit({
|
|
windowMs: 5 * 60 * 1000,
|
|
limit: 10,
|
|
keyGenerator: determineKey,
|
|
handler: (req, res) => errors.errorTooManyRequests(res)
|
|
})
|
|
|
|
// limits the amount of requests to the new note endpoint per 5 minutes based on configuration
|
|
const newNotes = rateLimit({
|
|
windowMs: 5 * 60 * 1000,
|
|
limit: config.rateLimitNewNotes,
|
|
keyGenerator: determineKey,
|
|
handler: (req, res) => errors.errorTooManyRequests(res)
|
|
})
|
|
|
|
module.exports = {
|
|
userEndpoints,
|
|
newNotes
|
|
}
|