change email validation to regex only

This commit is contained in:
Julian Krauser 2025-05-01 17:36:48 +02:00
parent 753cfdd5da
commit 0ea780dd51
4 changed files with 37 additions and 52 deletions

56
package-lock.json generated
View file

@ -12,7 +12,6 @@
"cors": "^2.8.5",
"crypto": "^1.0.1",
"dotenv": "^16.4.5",
"email-check": "^1.1.0",
"express": "^5.1.0",
"express-rate-limit": "^7.5.0",
"express-validator": "^7.2.1",
@ -42,11 +41,11 @@
"speakeasy": "^2.0.0",
"sqlite3": "^5.1.7",
"typeorm": "^0.3.20",
"uuid": "^11.1.0"
"uuid": "^11.1.0",
"validator": "^13.15.0"
},
"devDependencies": {
"@types/cors": "^2.8.14",
"@types/email-check": "^1.1.3",
"@types/express": "^5.0.1",
"@types/ip": "^1.1.3",
"@types/jsonwebtoken": "^9.0.6",
@ -63,6 +62,7 @@
"@types/qrcode": "~1.5.5",
"@types/speakeasy": "^2.0.10",
"@types/uuid": "^10.0.0",
"@types/validator": "^13.15.0",
"ts-node": "10.9.2",
"typescript": "^5.8.3"
}
@ -808,13 +808,6 @@
"@types/node": "*"
}
},
"node_modules/@types/email-check": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@types/email-check/-/email-check-1.1.3.tgz",
"integrity": "sha512-XgU2uxm8JjfK9e/CJg389b96XeLxJbUSCfe4hZxxwTu3XYT7A70punAWfpdppFHWPDl/qNtHC9vl3TmRHom+8w==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/express": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.1.tgz",
@ -1106,6 +1099,13 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/validator": {
"version": "13.15.0",
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.0.tgz",
"integrity": "sha512-nh7nrWhLr6CBq9ldtw0wx+z9wKnnv/uTVLA9g/3/TcOYxbpOSZE+MhKPmWqU+K0NvThjhv12uD8MuqijB0WzEA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/yauzl": {
"version": "2.10.3",
"resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
@ -2176,18 +2176,6 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
"license": "MIT"
},
"node_modules/email-check": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/email-check/-/email-check-1.1.0.tgz",
"integrity": "sha512-VoqdsHtP/Ct+Dsl9nJRlvVXhcHicWjmmp2KvLbyg+WovdUXihe8EbDKC5u+3SlBQIlh8RK1qFD5A4RCgTrW9Wg==",
"license": "MIT",
"dependencies": {
"js-promisify": "1.0.1"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@ -2551,6 +2539,15 @@
"node": ">= 8.0.0"
}
},
"node_modules/express-validator/node_modules/validator": {
"version": "13.12.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz",
"integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==",
"license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/extract-zip": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
@ -3164,15 +3161,6 @@
"@pkgjs/parseargs": "^0.11.0"
}
},
"node_modules/js-promisify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/js-promisify/-/js-promisify-1.0.1.tgz",
"integrity": "sha512-/IBrGxYbrmRWA+rLtHVSiX7R92NuVqc84aSWXReEjwcj7NchYf+Wy/ShAapCmMM5ev0mvD2IhWmZIDk/7f/utQ==",
"license": "MIT",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -6032,9 +6020,9 @@
"license": "MIT"
},
"node_modules/validator": {
"version": "13.12.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz",
"integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==",
"version": "13.15.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.15.0.tgz",
"integrity": "sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==",
"license": "MIT",
"engines": {
"node": ">= 0.10"

View file

@ -28,7 +28,6 @@
"cors": "^2.8.5",
"crypto": "^1.0.1",
"dotenv": "^16.4.5",
"email-check": "^1.1.0",
"express": "^5.1.0",
"express-rate-limit": "^7.5.0",
"express-validator": "^7.2.1",
@ -58,11 +57,11 @@
"speakeasy": "^2.0.0",
"sqlite3": "^5.1.7",
"typeorm": "^0.3.20",
"uuid": "^11.1.0"
"uuid": "^11.1.0",
"validator": "^13.15.0"
},
"devDependencies": {
"@types/cors": "^2.8.14",
"@types/email-check": "^1.1.3",
"@types/express": "^5.0.1",
"@types/ip": "^1.1.3",
"@types/jsonwebtoken": "^9.0.6",
@ -79,6 +78,7 @@
"@types/qrcode": "~1.5.5",
"@types/speakeasy": "^2.0.10",
"@types/uuid": "^10.0.0",
"@types/validator": "^13.15.0",
"ts-node": "10.9.2",
"typescript": "^5.8.3"
}

View file

@ -1,7 +1,7 @@
import { Transporter, createTransport, TransportOptions } from "nodemailer";
import { Attachment } from "nodemailer/lib/mailer";
import SettingHelper from "./settingsHelper";
import emailCheck from "email-check";
import validator from "validator";
export default abstract class MailHelper {
private static transporter: Transporter;
@ -45,7 +45,8 @@ export default abstract class MailHelper {
.then(() => {
return true;
})
.catch(() => {
.catch((err) => {
console.log(err);
return false;
})
.finally(() => {
@ -56,13 +57,14 @@ export default abstract class MailHelper {
}
static async checkMail(mail: string): Promise<boolean> {
return await emailCheck(mail)
.then((res) => {
return res;
})
.catch((err) => {
return false;
});
return validator.isEmail(mail);
// return await emailCheck(mail)
// .then((res) => {
// return res;
// })
// .catch((err) => {
// return false;
// });
}
static initialize() {

View file

@ -56,17 +56,12 @@ export default abstract class SettingHelper {
return rawValue as unknown as SettingValueMapping[K];
}
let processedValue = rawValue;
if (typeof settingType.type === "string" && settingType.type.includes("/crypt")) {
processedValue = CodingHelper.decrypt(APPLICATION_SECRET, processedValue);
}
const baseType =
typeof settingType.type === "string"
? (settingType.type.split("/")[0] as SettingTypeAtom)
: (settingType.type as SettingTypeAtom);
return this.converters[baseType].fromString(processedValue) as unknown as SettingValueMapping[K];
return this.converters[baseType].fromString(rawValue) as unknown as SettingValueMapping[K];
}
/**