diff --git a/package.json b/package.json index d1e1ce0..ad32ac4 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "bcrypt": "^5.0.1", + "cors": "^2.8.5", "dotenv": "^16.0.1", "express": "^4.18.1", "express-validator": "^6.14.2", @@ -21,6 +22,7 @@ "ws": "^8.8.1" }, "devDependencies": { + "@types/cors": "^2.8.12", "@types/bcrypt": "^5.0.0", "@types/express": "^4.17.13", "@types/jsonwebtoken": "^8.5.9", diff --git a/src/routes/matrix/index.ts b/src/routes/matrix/index.ts index a43e24f..de84559 100644 --- a/src/routes/matrix/index.ts +++ b/src/routes/matrix/index.ts @@ -5,10 +5,13 @@ import { authenticateRoute, loginAttempt } from "../../auth"; import { query, withClient } from "../../database"; import { getMessagesByChannelAfterPage, getMessagesByChannelFirstPage } from "../../database/templates"; import { handle, waitForEvent } from "../../gateway"; +import cors from "cors"; import sendMessage from "../../impl"; const router = express.Router(); +router.use(cors()); + const matrixProtocol = process.env.MATRIX_PROTOCOL ? process.env.MATRIX_PROTOCOL : "http"; const matrixHomeserverBaseUrl = process.env.MATRIX_HOMESERVER_BASE_URL ? process.env.MATRIX_HOMESERVER_BASE_URL : "localhost:3000"; const matrixWaffleAppUrl = process.env.MATRIX_WAFFLE_APP_URL ? process.env.MATRIX_WAFFLE_APP_URL : "localhost:3000"; @@ -146,13 +149,6 @@ async function buildSyncPayload(user: User, cursors: MatrixSyncCursors, onlyOuts }; } -router.use((_req, res, next) => { - res.header("Access-Control-Allow-Origin", "*"); - res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); - res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization"); - next(); -}); - router.get("/.well-known/matrix/client", (req, res) => { res.json({ "m.homeserver": { @@ -184,7 +180,7 @@ router.get("/_matrix/client/r0/login", (req, res) => { }); router.post("/_matrix/client/r0/register", (req, res) => { - res.status(401).json({ + res.status(403).json({ errcode: "M_FORBIDDEN", error: "Registration is not implemented" }); diff --git a/yarn.lock b/yarn.lock index 7f007ab..7727008 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,6 +39,11 @@ dependencies: "@types/node" "*" +"@types/cors@^2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + "@types/express-serve-static-core@^4.17.18": version "4.17.28" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" @@ -261,6 +266,14 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -714,7 +727,7 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -object-assign@^4.1.1: +object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -1045,7 +1058,7 @@ validator@^13.7.0: resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=