check mail config on mail value change

This commit is contained in:
Julian Krauser 2025-04-30 11:38:04 +02:00
parent 5b3a72820a
commit 41cb4eb569
2 changed files with 57 additions and 3 deletions

View file

@ -14,6 +14,9 @@ import {
UrlConverter,
} from "./convertHelper";
import cloneDeep from "lodash.clonedeep";
import { rejects } from "assert";
import InternalException from "../exceptions/internalException";
import MailHelper from "./mailHelper";
export default abstract class SettingHelper {
private static settings: { [key in SettingString]?: string } = {};
@ -141,6 +144,39 @@ export default abstract class SettingHelper {
}
}
public static async checkMail<K extends SettingString>(
setting: Array<{ key: K; value: SettingValueMapping[K] }>
): Promise<void> {
return new Promise(async (resolve, reject) => {
if (setting.some((t) => t.key == "mail.email" && t.value != undefined)) {
let emailValue = setting.find((t) => t.key == "mail.email").value as string;
let checkMail = await MailHelper.checkMail(emailValue);
if (!checkMail) {
return reject("mail");
}
}
if (setting.some((t) => t.key.startsWith("mail"))) {
let checkConfig = await MailHelper.verifyTransport({
user:
(setting.find((t) => t.key == "mail.username").value as string) ??
SettingHelper.getSetting("mail.username"),
password:
(setting.find((t) => t.key == "mail.password").value as string) ??
SettingHelper.getSetting("mail.password"),
host: (setting.find((t) => t.key == "mail.host").value as string) ?? SettingHelper.getSetting("mail.host"),
port: (setting.find((t) => t.key == "mail.port").value as number) ?? SettingHelper.getSetting("mail.port"),
secure:
(setting.find((t) => t.key == "mail.secure").value as boolean) ?? SettingHelper.getSetting("mail.secure"),
});
if (!checkConfig) {
return reject("Config is not valid");
}
}
resolve();
});
}
/**
* Validates a setting
* @param key The key of the setting