make OTP plugin inherit SMTP relay configuration
Use rms.auth.smtp_relay settings as the primary source for OTP mail transport (host/port/auth/tls/from/replyTo), with existing OTP/env values only as fallback. This lets OTP delivery work immediately when relay settings are already configured.
This commit is contained in:
@@ -10,19 +10,43 @@ async function createPlugin(ctx) {
|
||||
let transportKey = "";
|
||||
|
||||
function readTransportConfig() {
|
||||
const host = String(ctx.getSetting("host", ctx.env.SMTP_HOST || "")).trim();
|
||||
const portRaw = Number(ctx.getSetting("port", ctx.env.SMTP_PORT || 587));
|
||||
const secure = String(ctx.getSetting("secure", ctx.env.SMTP_SECURE || "false")) === "true";
|
||||
const authUser = String(ctx.getSetting("authUser", ctx.env.SMTP_USER || "")).trim();
|
||||
const authPass = String(ctx.getSetting("authPass", ctx.env.SMTP_PASS || "")).trim();
|
||||
const allowInvalidCert = String(ctx.getSetting("allowInvalidCert", ctx.env.SMTP_ALLOW_INVALID_CERT || "false")) === "true";
|
||||
const relaySetting = typeof ctx.getPluginSetting === "function"
|
||||
? (key, fallback = null) => ctx.getPluginSetting("rms.auth.smtp_relay", key, fallback)
|
||||
: (_key, fallback = null) => fallback;
|
||||
|
||||
const host = String(
|
||||
relaySetting("host", ctx.getSetting("host", ctx.env.SMTP_HOST || ""))
|
||||
).trim();
|
||||
const portRaw = Number(
|
||||
relaySetting("port", ctx.getSetting("port", ctx.env.SMTP_PORT || 587))
|
||||
);
|
||||
const secure = String(
|
||||
relaySetting("secure", ctx.getSetting("secure", ctx.env.SMTP_SECURE || "false"))
|
||||
) === "true";
|
||||
const authUser = String(
|
||||
relaySetting("authUser", ctx.getSetting("authUser", ctx.env.SMTP_USER || ""))
|
||||
).trim();
|
||||
const authPass = String(
|
||||
relaySetting("authPass", ctx.getSetting("authPass", ctx.env.SMTP_PASS || ""))
|
||||
).trim();
|
||||
const allowInvalidCert = String(
|
||||
relaySetting("allowInvalidCert", ctx.getSetting("allowInvalidCert", ctx.env.SMTP_ALLOW_INVALID_CERT || "false"))
|
||||
) === "true";
|
||||
const from = String(
|
||||
relaySetting("from", ctx.getSetting("from", ctx.env.SMTP_FROM || "noreply@arcg.at"))
|
||||
).trim() || "noreply@arcg.at";
|
||||
const replyTo = String(
|
||||
relaySetting("replyTo", ctx.getSetting("replyTo", ctx.env.SMTP_REPLY_TO || ""))
|
||||
).trim();
|
||||
return {
|
||||
host,
|
||||
port: Number.isFinite(portRaw) && portRaw > 0 ? portRaw : 587,
|
||||
secure,
|
||||
authUser,
|
||||
authPass,
|
||||
allowInvalidCert
|
||||
allowInvalidCert,
|
||||
from,
|
||||
replyTo
|
||||
};
|
||||
}
|
||||
|
||||
@@ -64,12 +88,13 @@ async function createPlugin(ctx) {
|
||||
if (!recipient) {
|
||||
throw new Error("recipient missing");
|
||||
}
|
||||
const transportConfig = readTransportConfig();
|
||||
const entry = {
|
||||
at: new Date().toISOString(),
|
||||
via: "rms.auth.otp_email",
|
||||
to: recipient,
|
||||
from: String(ctx.getSetting("from", ctx.env.SMTP_FROM || "noreply@arcg.at")),
|
||||
replyTo: String(ctx.getSetting("replyTo", ctx.env.SMTP_REPLY_TO || "")),
|
||||
from: transportConfig.from,
|
||||
replyTo: transportConfig.replyTo,
|
||||
subject: String(payload.subject || "ARCG OTP"),
|
||||
text: String(payload.text || ""),
|
||||
html: String(payload.html || "")
|
||||
|
||||
Reference in New Issue
Block a user