11 changed files with 189 additions and 5 deletions
@ -0,0 +1,62 @@ |
|||
const { Job } = require('flitter-jobs') |
|||
|
|||
class SendVerificationEmailJob extends Job { |
|||
static get services() { |
|||
return [...super.services, 'models', 'jobs', 'output', 'configs'] |
|||
} |
|||
|
|||
async execute(job) { |
|||
const {data} = job |
|||
const {user_id} = data |
|||
|
|||
try { |
|||
const User = this.models.get('auth:User') |
|||
const user = await User.findById(user_id) |
|||
if (!user) { |
|||
this.error(`Unable to find user with ID: ${user_id}`) |
|||
throw new Error('Unable to find user with that ID.') |
|||
} |
|||
|
|||
this.info(`Sending verification email for user: ${user.uid}`) |
|||
|
|||
// Create an authenticated key-action
|
|||
const key_action = await this.key_action(user) |
|||
|
|||
this.info(`Created verification keyaction ${key_action.id} (key: ${key_action.key}, handler: ${key_action.handler})`) |
|||
|
|||
await this.jobs.queue('mailer').add('EMail', { |
|||
to: user.email, |
|||
subject: 'Confirm Your E-mail | ' + this.configs.get('app.name'), |
|||
email_params: { |
|||
header_text: 'Confirm Your E-mail', |
|||
body_paragraphs: [ |
|||
'The e-mail address for your ' + this.configs.get('app.name') + ' was set or changed. Click the link below to verify this change.', |
|||
'If you didn\'t request this e-mail, please contact your system administrator.', |
|||
], |
|||
button_text: 'Confirm E-mail', |
|||
button_link: key_action.url(), |
|||
} |
|||
}) |
|||
|
|||
this.info('Logged e-mail job.') |
|||
} catch (e) { |
|||
this.error(e) |
|||
throw e |
|||
} |
|||
} |
|||
|
|||
async key_action(user) { |
|||
const KeyAction = this.models.get('auth:KeyAction') |
|||
const ka_data = { |
|||
handler: 'controller::auth:Forms.email_verify_keyaction', |
|||
used: false, |
|||
user_id: user._id, |
|||
auto_login: true, |
|||
no_auto_logout: false, |
|||
} |
|||
|
|||
return (new KeyAction(ka_data)).save() |
|||
} |
|||
} |
|||
|
|||
module.exports = exports = SendVerificationEmailJob |
Loading…
Reference in new issue