-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updates to Notifications and corrections to revision strategy
- Loading branch information
1 parent
68cba25
commit 12653c5
Showing
33 changed files
with
1,028 additions
and
966 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,10 @@ | ||
const nodemailer = require('nodemailer') | ||
const smtp = require('../Config/config.json').Notifications | ||
const client = require('../Config/config.json').Client | ||
const realmAdminEmail = require('../Config/keycloak.json').realmAdminEmail | ||
const pug = require('pug') | ||
const { getReviewerEmails, getSubmitterEmail, getServiceUserToken } = require('../Auth/keycloak') | ||
const fs = require('fs') | ||
const roleNames = require('../Config/config.json').roleNames | ||
const { roleNames, networkSubmissionStatuses } = require('../Config/config.json') | ||
|
||
const templatePath = './notifications/emailTemplates/' | ||
const linkBaseUrl = client.hostname | ||
|
@@ -27,105 +26,154 @@ const mailCallback = (err, info) => { | |
console.error(err) | ||
|
||
else { | ||
console.log(info) | ||
logNotification(info.envelope.to[0]) | ||
} | ||
} | ||
|
||
const logNotification = (recipient) => { | ||
const line = `\n${new Date().toLocaleString()} -- Email sent to ${recipient}` | ||
|
||
fs.appendFile('./logs/emailNotifLog.txt', line, err => { if(err) console.error(err) }) | ||
fs.mkdir('./logs', { recursive: true }, (err) => { | ||
if (err) return console.error('Error creating log directory:', err); | ||
|
||
fs.appendFile('./logs/emailNotifLog.txt', line, { flag: 'a' }, (err) => { | ||
if (err) console.error('Error writing to log:', err); | ||
}); | ||
}); | ||
} | ||
|
||
const notifyNewSubmission = async (entityName, submissionId, accessToken) => { | ||
const submissionReviewLink = reviewLink + submissionId | ||
const html = pug.renderFile(templatePath + 'receivedSubmission.pug', { entityName, submissionReviewLink }) | ||
|
||
const reviewerEmails = await getReviewerEmails(undefined, accessToken) | ||
reviewerEmails?.forEach(toAddr => { | ||
const message = { | ||
from: '[email protected]', | ||
to: toAddr, | ||
subject: `New Submission from ${entityName}`, | ||
html | ||
const message = { | ||
from: smtp.username, | ||
subject: `[RegiTrust] New Submission from ${entityName}`, | ||
html | ||
} | ||
for (const toAddr of reviewerEmails) { | ||
message.to = toAddr; | ||
try { | ||
await new Promise((resolve, reject) => { | ||
transport.sendMail(message, (error, info) => { | ||
mailCallback(error, info); | ||
|
||
if (error) return reject(error); | ||
resolve(info); | ||
}); | ||
}); | ||
} catch (error) { | ||
console.error("Error sending email to", toAddr, error); | ||
} | ||
|
||
transport.sendMail(message, mailCallback) | ||
}) | ||
} | ||
} | ||
|
||
const notifyNewEnrollmentRequest = async (submitterEmail, entityName, submissionId, accessToken) => { | ||
const submissionReviewLink = reviewEnrollmentLink + submissionId | ||
html = pug.renderFile(templatePath + 'receivedEnrollmentRequest.pug', { entityName, submissionReviewLink, isReviewer: true }) | ||
|
||
accessToken = await getServiceUserToken() | ||
|
||
/********************message to reviewers********************/ | ||
let message = { | ||
from: '[email protected]', | ||
subject: `New Enrollment Request from ${entityName}`, | ||
from: smtp.username, | ||
subject: `[RegiTrust] New Enrollment Request from ${entityName}`, | ||
html | ||
}; | ||
|
||
const reviewerEmails = await getReviewerEmails(roleNames.ONBOARDING_MANAGER, accessToken) | ||
reviewerEmails?.forEach(toAddr => { | ||
const reviewerEmails = await getReviewerEmails(roleNames.ONBOARDING_MANAGER, accessToken); | ||
for (const toAddr of reviewerEmails) { | ||
message.to = toAddr; | ||
transport.sendMail(message, mailCallback) | ||
}) | ||
try { | ||
await new Promise((resolve, reject) => { | ||
transport.sendMail(message, (error, info) => { | ||
mailCallback(error, info); | ||
|
||
if (error) return reject(error); | ||
resolve(info); | ||
}); | ||
}); | ||
} catch (error) { | ||
console.error("Error sending email to", toAddr, error); | ||
} | ||
} | ||
|
||
/********************message to submitter********************/ | ||
message.to = submitterEmail, | ||
message.subject = `Enrollment Request from ${entityName} Confirmation`, | ||
message.subject = `[RegiTrust] Enrollment Request from ${entityName} Confirmation`, | ||
message.html = pug.renderFile(templatePath + 'receivedEnrollmentRequest.pug', { entityName, submissionReviewLink, isReviewer: false }); | ||
|
||
transport.sendMail(message, mailCallback) | ||
} | ||
|
||
const notifySubmissionUpdated = (submitterEmail, entityName, submissionId) => { | ||
const notifySubmissionUpdated = async (submitterId, entityName, submissionId, isSubmitterEdit) => { | ||
const submissionReviewLink = reviewLink + submissionId | ||
const html = pug.renderFile(templatePath + 'submissionUpdated.pug', { entityName, submissionReviewLink }) | ||
const html = pug.renderFile(templatePath + 'submissionUpdated.pug', { entityName, submissionReviewLink, isSubmitterEdit }) | ||
|
||
const accessToken = await getServiceUserToken() | ||
const submitterEmail = await getSubmitterEmail(submitterId, accessToken) | ||
|
||
const message = { | ||
from: '[email protected]', | ||
from: smtp.username, | ||
to: submitterEmail, | ||
subject: 'A Reviewer has Made Changes to Your Submission', | ||
html | ||
} | ||
|
||
transport.sendMail(message, mailCallback) | ||
if(!isSubmitterEdit) { | ||
message.subject = `[RegiTrust] A Reviewer has Made Changes to Your Submission`; | ||
transport.sendMail(message, mailCallback) | ||
}else{ | ||
message.subject = `[RegiTrust] A Submission has been Updated` | ||
const accessToken = await getServiceUserToken() | ||
const reviewerEmails = await getReviewerEmails(roleNames.REVIEWER, accessToken) | ||
for (const toAddr of reviewerEmails) { | ||
message.to = toAddr; | ||
try { | ||
await new Promise((resolve, reject) => { | ||
transport.sendMail(message, (error, info) => { | ||
mailCallback(error, info); | ||
|
||
if (error) return reject(error); | ||
resolve(info); | ||
}); | ||
}); | ||
} catch (error) { | ||
console.error("Error sending email to", toAddr, error); | ||
} | ||
} | ||
} | ||
} | ||
|
||
const notifySubmissionReviewed = async (submitterId, entityName, reviewStatus, submissionId) => { | ||
const submissionReviewLink = reviewLink + submissionId | ||
const html = pug.renderFile(templatePath + 'submissionReviewed.pug', { entityName, reviewStatus, submissionReviewLink }) | ||
const html = pug.renderFile(templatePath + 'submissionReviewed.pug', { entityName, isApproved: reviewStatus == networkSubmissionStatuses.APPROVED, submissionReviewLink }) | ||
|
||
const accessToken = await getServiceUserToken() | ||
const submitterEmail = await getSubmitterEmail(submitterId, accessToken) | ||
|
||
const message = { | ||
from: '[email protected]', | ||
from: smtp.username, | ||
to: submitterEmail, | ||
subject: `A Reviewer has ${reviewStatus} Your Submission`, | ||
subject: `[RegiTrust] A Reviewer has ${reviewStatus} Your Submission`, | ||
html | ||
} | ||
|
||
transport.sendMail(message, mailCallback) | ||
} | ||
|
||
const notifyEnrollmentRequestReviewed = async (submitterEmail, entityName, reviewStatus, submissionId) => { | ||
const submissionReviewLink = reviewEnrollmentLink + submissionId | ||
html = pug.renderFile(templatePath + 'enrollmentRequestReviewed.pug', { entityName, reviewStatus, submissionReviewLink, isAdmin: false }) | ||
const notifyEnrollmentRequestApproved = async (submitterEmail, entityName) => { | ||
html = pug.renderFile(templatePath + 'enrollmentRequestApproved.pug', { entityName }) | ||
|
||
/**************Notify Submitter********************** */ | ||
const message = { | ||
from: '[email protected]', | ||
from: smtp.username, | ||
to: submitterEmail, | ||
subject: `Enrollment Request Reviewed`, | ||
subject: `[RegiTrust] Enrollment Request has Been Reviewed`, | ||
html | ||
} | ||
|
||
if(reviewStatus == "Approved"){ | ||
transport.sendMail(message, mailCallback) | ||
} | ||
transport.sendMail(message, mailCallback) | ||
} | ||
|
||
module.exports = { notifyNewSubmission, notifyNewEnrollmentRequest, notifySubmissionUpdated, notifySubmissionReviewed, notifyEnrollmentRequestReviewed } | ||
module.exports = { notifyNewSubmission, notifyNewEnrollmentRequest, notifySubmissionUpdated, notifySubmissionReviewed, notifyEnrollmentRequestApproved } |
14 changes: 9 additions & 5 deletions
14
Phase2/clients/notifications/emailTemplates/receivedEnrollmentRequest.pug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,11 @@ | ||
html(lang='en') | ||
body | ||
h1 Regi-Trust Registry Network | ||
h2=`${isReviewer ? 'A new Registry Service Provider Enrollment request was submitted for' : 'We have received your enrollment request for'} ${entityName}` | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to review this request. | ||
if isReviewer | ||
p A new Trust Service Provider Enrollment request has been received for #{entityName}. | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to review this request. | ||
else | ||
p Your enrollment request for #{entityName} is under review. You will be notified if approved. | ||
br | ||
p RegiTrust |
9 changes: 4 additions & 5 deletions
9
Phase2/clients/notifications/emailTemplates/receivedSubmission.pug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,8 @@ | ||
html(lang='en') | ||
body | ||
h1 Regi-Trust Registry Network | ||
h2 A new registry entry has been submitted for review | ||
p=`${entityName} has created a registry entry and submitted it for you to review.` | ||
h2 Next steps: | ||
p A new network entry has been submitted for #{entityName}. | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to review this submission, make changes, or accept it into the registry. | ||
span to review this submission, make changes, or accept it into the registry. | ||
br | ||
p RegiTrust |
9 changes: 5 additions & 4 deletions
9
Phase2/clients/notifications/emailTemplates/submissionReviewed.pug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,8 @@ | ||
html(lang='en') | ||
body | ||
h1 Regi-Trust Registry Network | ||
h2 Your registry entry has been !{reviewStatus} | ||
p=`Your registry entry submission for ${entityName} was ${reviewStatus} by a registry reviewer${reviewStatus === 'Accepted and Published' ? ' and the entry was added to the registry' : ''}. ` | ||
p Your network entry for #{entityName} was #{isApproved ? 'approved' : 'declined'}. by a registry reviewer #{isApproved ? 'and has been added to the registry' : ''}. | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to view the submission. | ||
span to view the submission. | ||
br | ||
p RegiTrust |
19 changes: 12 additions & 7 deletions
19
Phase2/clients/notifications/emailTemplates/submissionUpdated.pug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,14 @@ | ||
html(lang='en') | ||
body | ||
h1 Regi-Trust Registry Network | ||
h2 Changes were made to your registry entry submission by a reviewer | ||
p=`Your registry entry submission for ${entityName} was altered by a registry reviewer after their initial review.` | ||
h2 Next steps: | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to view these changes or make any necessary updates. | ||
if isSubmitterEdit | ||
p A submission for #{entityName} has been updated. | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to view these changes or make any updates. | ||
else | ||
p Your network entry submission for #{entityName} was modified by a registry reviewer. | ||
p | ||
a(href=submissionReviewLink) Click here | ||
span to view these changes or make any necessary updates. | ||
br | ||
p RegiTrust |
Oops, something went wrong.