From 8745151fe7d7a8dbedeb666235cbe60a7ed24981 Mon Sep 17 00:00:00 2001 From: Georg-code Date: Mon, 20 Sep 2021 20:34:11 +0200 Subject: [PATCH 1/2] added corners to accordeon --- libs/faq/src/components/accordeon/accordeon.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libs/faq/src/components/accordeon/accordeon.scss b/libs/faq/src/components/accordeon/accordeon.scss index 53416d85..cae19111 100644 --- a/libs/faq/src/components/accordeon/accordeon.scss +++ b/libs/faq/src/components/accordeon/accordeon.scss @@ -1,13 +1,12 @@ @use "theme:variables" as variables; .accordion { - background-color: white; + background-color: variables.$white; width: 60%; font-weight: variables.$font-weight-bold; margin: 3%; overflow: hidden; margin-left: 20%; - border-radius: 10px; box-shadow: 1px 3px 2px 1px rgba(0, 0, 0, 0.1); &__container { From 30926db81c2b3cc67650ff684d71036e33f450c1 Mon Sep 17 00:00:00 2001 From: Georg-code Date: Tue, 21 Sep 2021 19:59:41 +0200 Subject: [PATCH 2/2] added rate limit --- apps/alpsbte-api/src/app/routes/assets.ts | 2 + apps/alpsbte-api/src/app/routes/base.ts | 3 +- apps/alpsbte-api/src/main.ts | 9 ++++ package-lock.json | 56 ++++++++++++++--------- package.json | 2 + 5 files changed, 49 insertions(+), 23 deletions(-) diff --git a/apps/alpsbte-api/src/app/routes/assets.ts b/apps/alpsbte-api/src/app/routes/assets.ts index f8f76a1e..2c547332 100644 --- a/apps/alpsbte-api/src/app/routes/assets.ts +++ b/apps/alpsbte-api/src/app/routes/assets.ts @@ -6,6 +6,8 @@ import { nameOf } from '@alpsbte/shared/util'; export const assets = express.Router(); + + assets.get('/', (req: Request, res: Response) => { return res.send(nameOf({ assets })); }); diff --git a/apps/alpsbte-api/src/app/routes/base.ts b/apps/alpsbte-api/src/app/routes/base.ts index d2ac67d7..464c3607 100644 --- a/apps/alpsbte-api/src/app/routes/base.ts +++ b/apps/alpsbte-api/src/app/routes/base.ts @@ -4,5 +4,6 @@ import { Request, Response } from 'express'; export const base = express.Router(); base.get(`/`, async (req: Request, res: Response) => { - return res.send('Welcome to Alps BTE API'); + return res.send('Welcome to the Alps BTE API'); }); + diff --git a/apps/alpsbte-api/src/main.ts b/apps/alpsbte-api/src/main.ts index c4e77526..f3febd9a 100644 --- a/apps/alpsbte-api/src/main.ts +++ b/apps/alpsbte-api/src/main.ts @@ -1,5 +1,6 @@ import * as express from 'express'; import * as cors from 'cors'; +import * as rateLimit from 'express-rate-limit' import { config } from './config'; import { base, assets } from './app/routes'; @@ -10,6 +11,14 @@ const app = express(); app.use(cors('*')); app.use(express.json()); + + +const limiter = rateLimit({ + windowMs: 10 * 60 * 1000, + max: 200 +}); +app.use(limiter); + app.get('/', (req: express.Request, res: express.Response) => { return res.redirect(`/${config.base}`); }); diff --git a/package-lock.json b/package-lock.json index 47b5e653..fae2b9e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,12 +17,14 @@ "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/react-fontawesome": "^0.1.15", "@storybook/preset-scss": "^1.0.3", + "@types/express-rate-limit": "^5.1.3", "@types/object-path": "^0.11.1", "@types/react-router-dom": "^5.1.8", "add": "^2.0.6", "core-js": "^3.6.5", "cors": "^2.8.5", "express": "4.17.1", + "express-rate-limit": "^5.3.0", "framer-motion": "^4.1.17", "localforage": "^1.10.0", "mobx": "^6.3.2", @@ -8002,7 +8004,6 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -8031,7 +8032,6 @@ "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -8046,18 +8046,24 @@ "version": "4.17.0", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz", "integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==", - "dev": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", "@types/serve-static": "*" } }, + "node_modules/@types/express-rate-limit": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@types/express-rate-limit/-/express-rate-limit-5.1.3.tgz", + "integrity": "sha512-H+TYy3K53uPU2TqPGFYaiWc2xJV6+bIFkDd/Ma2/h67Pa6ARk9kWE0p/K9OH1Okm0et9Sfm66fmXoAxsH2PHXg==", + "dependencies": { + "@types/express": "*" + } + }, "node_modules/@types/express-serve-static-core": { "version": "4.17.24", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -8265,8 +8271,7 @@ "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/minimatch": { "version": "3.0.5", @@ -8277,8 +8282,7 @@ "node_modules/@types/node": { "version": "14.14.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", - "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==", - "dev": true + "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==" }, "node_modules/@types/node-fetch": { "version": "2.5.12", @@ -8354,8 +8358,7 @@ "node_modules/@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/reach__router": { "version": "1.3.9", @@ -8440,7 +8443,6 @@ "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -18558,6 +18560,11 @@ "node": ">= 0.10.0" } }, + "node_modules/express-rate-limit": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.3.0.tgz", + "integrity": "sha512-qJhfEgCnmteSeZAeuOKQ2WEIFTX5ajrzE0xS6gCOBCoRQcU+xEzQmgYQQTpzCcqUAAzTEtu4YEih4pnLfvNtew==" + }, "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -44011,7 +44018,6 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" @@ -44040,7 +44046,6 @@ "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, "requires": { "@types/node": "*" } @@ -44055,18 +44060,24 @@ "version": "4.17.0", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz", "integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==", - "dev": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "*", "@types/serve-static": "*" } }, + "@types/express-rate-limit": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@types/express-rate-limit/-/express-rate-limit-5.1.3.tgz", + "integrity": "sha512-H+TYy3K53uPU2TqPGFYaiWc2xJV6+bIFkDd/Ma2/h67Pa6ARk9kWE0p/K9OH1Okm0et9Sfm66fmXoAxsH2PHXg==", + "requires": { + "@types/express": "*" + } + }, "@types/express-serve-static-core": { "version": "4.17.24", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", @@ -44261,8 +44272,7 @@ "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/minimatch": { "version": "3.0.5", @@ -44273,8 +44283,7 @@ "@types/node": { "version": "14.14.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.33.tgz", - "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==", - "dev": true + "integrity": "sha512-oJqcTrgPUF29oUP8AsUqbXGJNuPutsetaa9kTQAQce5Lx5dTYWV02ScBiT/k1BX/Z7pKeqedmvp39Wu4zR7N7g==" }, "@types/node-fetch": { "version": "2.5.12", @@ -44350,8 +44359,7 @@ "@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/reach__router": { "version": "1.3.9", @@ -44436,7 +44444,6 @@ "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, "requires": { "@types/mime": "^1", "@types/node": "*" @@ -52575,6 +52582,11 @@ } } }, + "express-rate-limit": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.3.0.tgz", + "integrity": "sha512-qJhfEgCnmteSeZAeuOKQ2WEIFTX5ajrzE0xS6gCOBCoRQcU+xEzQmgYQQTpzCcqUAAzTEtu4YEih4pnLfvNtew==" + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", diff --git a/package.json b/package.json index fe5eb247..d8672c60 100644 --- a/package.json +++ b/package.json @@ -42,12 +42,14 @@ "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/react-fontawesome": "^0.1.15", "@storybook/preset-scss": "^1.0.3", + "@types/express-rate-limit": "^5.1.3", "@types/object-path": "^0.11.1", "@types/react-router-dom": "^5.1.8", "add": "^2.0.6", "core-js": "^3.6.5", "cors": "^2.8.5", "express": "4.17.1", + "express-rate-limit": "^5.3.0", "framer-motion": "^4.1.17", "localforage": "^1.10.0", "mobx": "^6.3.2",