const config = require('config') const unsubscribeSlug = config.get('unsubscribe.url') const resetPath = config.get('invite-reset-password.url') const confirmSignUp = config.get('confirm-signup.url') const { Email, User, services } = require('pubsweet-component-helper-service') const { getEmailCopy } = require('./emailCopy') module.exports = { async sendNotifications({ user, baseUrl, role, UserModel }) { const userHelper = new User({ UserModel }) const { firstName, lastName } = await userHelper.getEditorsInChief() const eicName = `${firstName} ${lastName}` const email = new Email({ type: 'user', toUser: { email: user.email, name: `${user.firstName} ${user.lastName}`, }, content: { ctaLink: services.createUrl(baseUrl, resetPath, { email: user.email, token: user.passwordResetToken, firstName: user.firstName, lastName: user.lastName, affiliation: user.affiliation, title: user.title, }), ctaText: 'CONFIRM ACCOUNT', signatureName: eicName, unsubscribeLink: services.createUrl(baseUrl, unsubscribeSlug, { id: user.id, }), }, }) if (role) { sendNewUserEmail({ email, role }) } else { sendSignupEmail({ email, baseUrl, user }) } }, } const sendNewUserEmail = ({ email, role }) => { email.content.subject = 'Confirm Your Account' const { html, text } = email.getBody({ body: getEmailCopy({ emailType: 'user-added-by-admin', role, }), }) email.sendEmail({ html, text }) } const sendSignupEmail = ({ email, baseUrl, user }) => { email.content.subject = 'Confirm Your Email Address' email.content.ctaLink = services.createUrl(baseUrl, confirmSignUp, { userId: user.id, confirmationToken: user.confirmationToken, }) email.content.ctaText = 'CONFIRM' const { html, text } = email.getBody({ body: getEmailCopy({ emailType: 'user-signup', }), }) email.sendEmail({ html, text }) }