notifications: per user email prefs
This commit is contained in:
@@ -34,12 +34,13 @@ const MAIL_TEMPLATES_DIR = path.join(__dirname, 'mail_templates');
|
||||
// This will collect the most common details required for notification emails
|
||||
async function getMailConfig() {
|
||||
const cloudronName = await branding.getCloudronName();
|
||||
const { domain:dashboardDomain } = await dashboard.getLocation();
|
||||
const { fqdn:dashboardFqdn, domain:dashboardDomain } = await dashboard.getLocation();
|
||||
|
||||
return {
|
||||
cloudronName,
|
||||
notificationFrom: `"${cloudronName}" <no-reply@${dashboardDomain}>`,
|
||||
supportEmail: 'support@cloudron.io'
|
||||
supportEmail: 'support@cloudron.io',
|
||||
dashboardFqdn
|
||||
};
|
||||
}
|
||||
|
||||
@@ -99,15 +100,14 @@ async function sendInvite(user, invitor, email, inviteLink) {
|
||||
|
||||
const mailConfig = await getMailConfig();
|
||||
const translationAssets = await translations.getTranslations();
|
||||
const { fqdn:dashboardFqdn } = await dashboard.getLocation();
|
||||
|
||||
const templateData = {
|
||||
user: user.displayName || user.username || user.email,
|
||||
webadminUrl: `https://${dashboardFqdn}`,
|
||||
webadminUrl: `https://${mailConfig.dashboardFqdn}`,
|
||||
inviteLink: inviteLink,
|
||||
invitor: invitor ? invitor.email : null,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: `https://${dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
cloudronAvatarUrl: `https://${mailConfig.dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
};
|
||||
|
||||
const mailOptions = {
|
||||
@@ -134,7 +134,6 @@ async function sendNewLoginLocation(user, loginLocation) {
|
||||
|
||||
const mailConfig = await getMailConfig();
|
||||
const translationAssets = await translations.getTranslations();
|
||||
const { fqdn:dashboardFqdn } = await dashboard.getLocation();
|
||||
|
||||
const templateData = {
|
||||
user: user.displayName || user.username || user.email,
|
||||
@@ -143,7 +142,7 @@ async function sendNewLoginLocation(user, loginLocation) {
|
||||
country,
|
||||
city,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: `https://${dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
cloudronAvatarUrl: `https://${mailConfig.dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
};
|
||||
|
||||
const mailOptions = {
|
||||
@@ -164,13 +163,12 @@ async function passwordReset(user, email, resetLink) {
|
||||
|
||||
const mailConfig = await getMailConfig();
|
||||
const translationAssets = await translations.getTranslations();
|
||||
const { fqdn:dashboardFqdn } = await dashboard.getLocation();
|
||||
|
||||
const templateData = {
|
||||
user: user.displayName || user.username || user.email,
|
||||
resetLink: resetLink,
|
||||
cloudronName: mailConfig.cloudronName,
|
||||
cloudronAvatarUrl: `https://${dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
cloudronAvatarUrl: `https://${mailConfig.dashboardFqdn}/api/v1/cloudron/avatar`
|
||||
};
|
||||
|
||||
const mailOptions = {
|
||||
@@ -190,12 +188,13 @@ async function backupFailed(mailTo, errorMessage, logUrl) {
|
||||
assert.strictEqual(typeof logUrl, 'string');
|
||||
|
||||
const mailConfig = await getMailConfig();
|
||||
const notificationsUrl = `https://${mailConfig.dashboardFqdn}/cloudron/#/notifications`;
|
||||
|
||||
const mailOptions = {
|
||||
from: mailConfig.notificationFrom,
|
||||
to: mailTo,
|
||||
subject: `[${mailConfig.cloudronName}] Failed to backup`,
|
||||
text: render('backup_failed.ejs', { cloudronName: mailConfig.cloudronName, message: errorMessage, logUrl })
|
||||
text: render('backup_failed.ejs', { cloudronName: mailConfig.cloudronName, message: errorMessage, logUrl, notificationsUrl })
|
||||
};
|
||||
|
||||
await sendMail(mailOptions);
|
||||
@@ -207,12 +206,13 @@ async function certificateRenewalError(mailTo, domain, message) {
|
||||
assert.strictEqual(typeof message, 'string');
|
||||
|
||||
const mailConfig = await getMailConfig();
|
||||
const notificationsUrl = `https://${mailConfig.dashboardFqdn}/cloudron/#/notifications`;
|
||||
|
||||
const mailOptions = {
|
||||
from: mailConfig.notificationFrom,
|
||||
to: mailTo,
|
||||
subject: `[${mailConfig.cloudronName}] Certificate renewal error`,
|
||||
text: render('certificate_renewal_error.ejs', { domain, message })
|
||||
text: render('certificate_renewal_error.ejs', { domain, message, notificationsUrl })
|
||||
};
|
||||
|
||||
await sendMail(mailOptions);
|
||||
|
||||
Reference in New Issue
Block a user