diff --git a/bun.lock b/bun.lock index af9f2ea..ba368c1 100644 --- a/bun.lock +++ b/bun.lock @@ -10,6 +10,7 @@ "bcrypt": "^5.1.1", "body-parser": "^1.20.3", "colors": "^1.4.0", + "disposable-email-detector": "^3.0.0", "dotenv": "^16.4.7", "express": "^4.21.2", "express-jsdoc-swagger": "^1.8.0", @@ -342,6 +343,8 @@ "diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], + "disposable-email-detector": ["disposable-email-detector@3.0.0", "", { "dependencies": { "disposable-email-detector": "^1.0.1" } }, "sha512-q/7bq+vXAupa8Z9eGlrpJ8qJ0Q3j8cgs15qvvdJNVnmFso8ludFFBVXoj4ALRfy66K92T9xdyWxl98RX9jlAiw=="], + "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], "dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], @@ -732,6 +735,8 @@ "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "disposable-email-detector/disposable-email-detector": ["disposable-email-detector@1.0.3", "", { "dependencies": { "disposable-email-detector": "^1.0.1" } }, "sha512-hqVTnwz4B8iuFefKcp6I3m8J/ZXiNzBZROD2t3lS2cZlo+/hkKrsMvn9i9wyuXTGZ0WUblC8h/gSzybF9nVWiQ=="], + "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "express-jsdoc-swagger/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], diff --git a/package.json b/package.json index b122ff4..131c697 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "bcrypt": "^5.1.1", "body-parser": "^1.20.3", "colors": "^1.4.0", + "disposable-email-detector": "^3.0.0", "dotenv": "^16.4.7", "express": "^4.21.2", "express-jsdoc-swagger": "^1.8.0", diff --git a/src/routes/user.ts b/src/routes/user.ts index 1e67fce..99bd851 100644 --- a/src/routes/user.ts +++ b/src/routes/user.ts @@ -1,5 +1,6 @@ import { sInvite } from "@prisma/client"; import bcrypt from "bcrypt"; +import disposableEmailDetector from "disposable-email-detector"; import express from "express"; import { inviteToSlack } from "../func/slackInvite"; @@ -52,6 +53,13 @@ router.post("/signup", async (req, res) => { return; } + let isDisposable = await disposableEmailDetector(email); + + if (isDisposable) { + res.status(400).json("Disposable email addresses are not allowed"); + return; + } + // Check if the user already exists const user = await prisma.user.findUnique({ where: {