Compare commits

...

2 Commits

Author SHA1 Message Date
Douglas Barone
59580340e6 1.0.1 2023-12-19 08:35:25 -04:00
Douglas Barone
23b72e5c21 Add express-rate-limit middleware to server.js 2023-12-19 08:35:22 -04:00
3 changed files with 38 additions and 15 deletions

19
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "ifms-pwd-web", "name": "ifms-pwd-web",
"version": "1.0.0", "version": "1.0.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ifms-pwd-web", "name": "ifms-pwd-web",
"version": "1.0.0", "version": "1.0.1",
"dependencies": { "dependencies": {
"@mdi/font": "7.0.96", "@mdi/font": "7.0.96",
"@trpc/client": "^10.44.1", "@trpc/client": "^10.44.1",
@ -15,6 +15,7 @@
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"express": "^4.18.2", "express": "^4.18.2",
"express-rate-limit": "^7.1.5",
"ldapts": "^7.0.7", "ldapts": "^7.0.7",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.2.0", "vue": "^3.2.0",
@ -1988,6 +1989,20 @@
"node": ">= 0.10.0" "node": ">= 0.10.0"
} }
}, },
"node_modules/express-rate-limit": {
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.1.5.tgz",
"integrity": "sha512-/iVogxu7ueadrepw1bS0X0kaRC/U0afwiYRSLg68Ts+p4Dc85Q5QKsOnPS/QUjPMHvOJQtBDrZgvkOzf8ejUYw==",
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/express-rate-limit"
},
"peerDependencies": {
"express": "4 || 5 || ^5.0.0-beta.1"
}
},
"node_modules/express/node_modules/body-parser": { "node_modules/express/node_modules/body-parser": {
"version": "1.20.1", "version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",

View File

@ -1,6 +1,6 @@
{ {
"name": "ifms-pwd-web", "name": "ifms-pwd-web",
"version": "1.0.0", "version": "1.0.1",
"scripts": { "scripts": {
"clean": "rimraf ./dist", "clean": "rimraf ./dist",
"dev:web": "vite --host", "dev:web": "vite --host",
@ -21,6 +21,7 @@
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"express": "^4.18.2", "express": "^4.18.2",
"express-rate-limit": "^7.1.5",
"ldapts": "^7.0.7", "ldapts": "^7.0.7",
"roboto-fontface": "*", "roboto-fontface": "*",
"vue": "^3.2.0", "vue": "^3.2.0",

View File

@ -1,18 +1,25 @@
import express from "express"; import express from 'express'
import { trpcMiddleware } from "./trpc"; import { trpcMiddleware } from './trpc'
import cors from "cors"; import cors from 'cors'
import { rateLimit } from 'express-rate-limit'
const server = express(); const limiter = rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 100 // limit each IP to 100 requests per windowMs
})
server.use(cors()); const server = express()
server.use("/trpc", trpcMiddleware);
if (process.env.NODE_ENV == "production") { server.use(cors())
server.use("/", express.static("dist/web")); server.use(limiter)
server.use('/trpc', trpcMiddleware)
server.get("*", (req, res) => { if (process.env.NODE_ENV == 'production') {
res.sendFile("index.html", { root: "dist/web" }); server.use('/', express.static('dist/web'))
});
server.get('*', (req, res) => {
res.sendFile('index.html', { root: 'dist/web' })
})
} }
export { server }; export { server }